AndroidでDialogの開き方が大きく変わっていたので、簡単に実装をまとめました.
Fragmentを開く際に推奨されるのはDialogFragmentを継承してDialogを作ります.
1 2 3 4 5 6 7 8 |
public class TestDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { //Dialog を作成する AlertDialog.Builder alertBuilder = new AlertDialog.Builder(getActivity()); alertBuilder.setMessage(R.string.alertmsg); return alertBuilder.create(); } |
簡単なAlertDialogだと上記のような実装になりますが、ひとつDialogを表示するのに1クラス作成するのが手間な時も有るかと思います.
そこで、Dialogを表示する汎用Fragmentを作成しておくと便利です.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class SimpleDialog extends DialogFragment { Dialog mDialogToShow; //表示したいDialogをここで渡す public SimpleDialog(Dialog dialogToShow) { mDialogToShow = dialogToShow; } @Override public Dialog onCreateDialog(Bundle savedInstatnceState) { return mDialogToShow; } } |
Dialogを表示したいときは、従来通りBuilderでDialogを生成し、それをコンストラクタの引数にしてSimpleDialogをnewします.
あとは、SimpleDialogのインスタンスに対して、showメソッドを呼んであげればDialogが表示されます.