ダイアログ部品について

android-dialog.png

ダイアログはActivityの部品である。

Material DesignによるDialogに関するガイドライン

ダイアログとは?

ユーザーにクリティカルな情報を与えるもの。
たとえば、ユーザーに決定を迫るものだったり。

ダイアログのつかいどき

なるべくダイアログは頻繁に使わないようにしましょう[1]
なぜなら、ダイアログが登場するたびに自然な流れをぶった切ることになるからです。
ユーザーが思考の流れを中断させて、ダイアログに注意を向けることになります。
なので、よっぽどユーザーの思考の流れを中断させて、ねぇこっちを見てよ!!!という時以外は使わないようにしましょう。

あ、これダイアログにするほどのものじゃなかったなぁ〜と思った時の、ダイアログの代用品になるもの

ここまで読んで、これはダイアログにするほどじゃなかった!と思ったあなた、
以下のもので代用できるか検討してみましょう

  • メニュー
  • 現在のコンテキストエリア(つまり、ユーザーの思考の流れに沿ってる何か)の中に、折りたたみ可能なUIとして入れる

XMLファイルとjavaをつなげるもの

findViewById
もしfindViewByIdで実行時エラーになったら、xmlファイルの中で複数の同じandroid:idが定義されているのを見てみよう。

アラートダイアログ

 AlertDialog.Builder dlg= new AlertDialog.Builder(this);
 dlg.setTitle("色の設定");
 dlg.setMessage("message here");
 dlg.show();

カスタムダイアログ

final Dialog dialog = new Dialog(this);
        dialog.setContentView(R.layout.dialog_color);//xmlファイルの名前
        dialog.setTitle("タイトル");
 
        // set the custom dialog components - text, image and button
        TextView text = (TextView) dialog.findViewById(R.id.text);
        text.setText("Android custom dialog example!");
        ImageView image = (ImageView) dialog.findViewById(R.id.image);
        image.setImageResource(R.drawable.ic_launcher);
 
        dialog.show();

おすすめのひな形

public class MigrationActivity extends Activity implements View.OnClickListener{
    /** Called when the activity is first created. */
    Button mButton;
    TextView mTextView;
    View mView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
        LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         mView = layoutInflater.inflate(R.layout.main, null, false);
        setContentView(mView);
        mButton =(Button)mView.findViewById(R.id.button1);
        mButton.setOnClickListener( this);
        mTextView=(TextView)mView.findViewById(R.id.textView1);
 
    }
    public void onClick(View v) {
        // TODO Auto-generated method stub
 
    }
}

ダイアログクラスを作る

ダイアログクラスのコンストラクタ

public MiffyDialog(Context context) {
        super(context);
        setContentView(R.layout.dialog_xml);//xmlファイルの名前を書く。
        setTitle("色の設定");

Activityにて呼ぶとき

mMiffyDialog=new MiffyDialog(this);
Bibliography

サポートサイト Wikidot.com