AlertDialog.Builderのshow()を使って表示すると画面の回転で消えてしまう
ので、ちょっと調べてみたらActivityのonCreateDialogをOverrideして
表示するのが基本のようで、これだと画面が回転しても消えない
で、やってみたのですがDialogを継承してonCreateをOverrideして
AlertDialog.Builderのcreateやshowを呼び出しておいても表示されない
なのでMyDialogてクラスがあるとしてその中に
public class MyDialog extends Dialog {
private Context context; //フィールド
//コンストラクタ
public MyDialog(final Context context) {
//Dialogを継承しているので必要
super(context);
this.context = context;
}
//これをActivityのonCreateDialogで呼び出す
public Dialog createAlertDialog() {
//まずはAlartDialog.Builderの生成
AlertDialog.Builder builder = new AlertDialog.Builder(context);
//必要なことをする
return builder.create();
}
}
って感じのメソッドを作ってActivityのonCreateDialogで
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case 0:
MyDialog myDialog = new MyDialog(this);
dialog = myDialog.createAlertDialog();
break;
//なんか他にもあったらその処理
}
return dialog;
}
で、必要な所でshowDialog(0);をよんでやればOK
他にうまいやり方があるのかもしれないけど、とりあえずこれで妥協
レイアウトを自作したダイアログならDialogのonCreateをOverrideして
そのなかでsetContentViewやらなんやらしてやればいいんだけど
その辺はここが参考になりました
http://androidr.sblo.jp/article/44022821.html
あと、AlertDialogを別ファイルにしないならここが参考になりました
http://beefsalt.blog79.fc2.com/blog-entry-23.html
それとここも参考になりました
http://www.techdoctranslator.com/android/guide/ui/dialogs
ちなみに、SimpleGmapshのダイアログ3個の内レイアウトまるまる自作は1個だけ
気が向いたら全部レイアウト自作に切り替えようかなぁ