異常終了
以下な方法がある、というエントリを見て実装トライ。
- CLEAR_TOP なフラグを立てて最初に表示される Activity を startActivity すれば (ry
AlertDialog
とりあえず以下なカンジでクラスを定義しておいて
public static class MyAlertDialog extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder Builder = new AlertDialog.Builder(getActivity()); Builder.setTitle("プログラム異常終了"); Builder.setMessage("アプリケーションが異常終了しました。"); Builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Intent i = new Intent(getActivity(), InitActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); getActivity().startActivity(i); dialog.dismiss(); } }); Builder.setCancelable(false); return Builder.create(); } }
あとは呼び出す必要がある場所で以下。
FragmentManager manager = getFragmentManager(); MyAlertDialog alertDialog = new MyAlertDialog(); alertDialog.show(manager, "dialog");
つうかこれ、例外処理を記述しなくても compilation error にならない例外を捕まえてこれを出しちゃう、というのもアレかもしれません。つうか最近は Analytics なツールでオチたイベントを catch できるって話も聞いたな。こっちもどこかで試験してみたいかも。
とりあえず上記の記述があれば
} catch (Exception e) { e.printStackTrace(); FragmentManager manager = getFragmentManager(); MyAlertDialog alertDialog = new MyAlertDialog(); alertDialog.show(manager, "dialog"); }
みたいな記述で良いのかどうか。とりあえず実装してみたいと思いますがどうなるか。