二重にネストしたTabActivityの子Activity*1からDialogを作成すると強制終了します.
android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@47be3840 is not valid; is your activity running? at android.view.ViewRoot.setView(ViewRoot.java:505) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) at android.view.Window$LocalWindowManager.addView(Window.java:424) at android.app.Dialog.show(Dialog.java:247) at android.app.Activity.showDialog(Activity.java:2556) at android.app.Activity.showDialog(Activity.java:2514) …
この場合は親のコンテキストで作成すればOK.
Activity parent = this.getParent(); Context context = ( parent == null ? this : parent ); new AlertDialog.Builder( context ) .setMessage( R.string.hoge ) .show();
いやしかしまどろっこしいので二重TabActivityは避けた方が良いです.
*1:根っこを1階層目とすると3階層目のActivity