2

次の方法を使用して、ユーザーに警告ボックスを表示してアプリケーションを終了しました。
しかし、私のアプリケーションは2回退出を求めています。

コード:

    @Override
    public void onBackPressed()
    {
        new AlertDialog.Builder(this)
        .setTitle("Closing Activity")
        .setMessage("Are you sure you want to close this activity?")
        .setPositiveButton("Yes", new DialogInterface.OnClickListener()
            {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();    
                }
            })
        .setNegativeButton("No", null)
        .show();
    }
4

2 に答える 2

7

これは、次のようないくつかの結果である可能性があります。

  1. void onKeyDown(...)orもオーバーライドし、そこにvoid dispatchKeyEvent(...) 呼び出しますonBackPressed();

  2. オーバーライドvoid finish()
    し、そこで 2 番目のダイアログを呼び出します

  3. あなたのアプリは 2 回インスタンス化
    されています (何らかの理由で -- コードを参照してください)。

  4. 意図的にアクティビティを意図的に 2 回開く場合は、ここで修正します :)
    コードを次の部分に置き換えて開きます。

    Intent intent = new Intent(this, yourSubActivityClass.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    

    ドキュメントから:

    設定されていて、起動されているアクティビティが現在のタスクで既に実行されている場合、そのアクティビティの新しいインスタンスを起動する代わりに、その上にある他のすべてのアクティビティが閉じられ、このインテントがに配信されます (現在上)新しいインテントとしての古いアクティビティ。

  5. それらのいくつかがあなたを助けた場合は、コメントで教えてください。
    それ以外の場合は、より多くのコードを投稿してください。

于 2013-06-03T17:54:57.920 に答える