異常終了

以下な方法がある、というエントリを見て実装トライ。

  • 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");
            }

みたいな記述で良いのかどうか。とりあえず実装してみたいと思いますがどうなるか。

参考にさせて頂いたエントリ

以下です。

感謝を込めて。