0

アプリケーションがバックグラウンドで実行される直前に、このアプリケーションを終了するかどうかを尋ねるダイアログボックスが表示されるようにしたいと思います。また、ユーザーが[いいえ]を選択した場合は、別のアプリケーションを起動するのではなく、アプリケーションを再開する必要があります。それで、それはアンドロイドで可能ですか?1つの解決策は、 onpause()またはonstop(内でonresume()を呼び出すようなものですが、これは実行できます。私を助けてください。


私のコードは次のようなものです:-

public void onPause() {
       AlertDialog.Builder builder = new AlertDialog.Builder(this);
       builder.setMessage("Do you want to quit");
       builder.setCancelable(false);
       builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            MytestprojectActivity.this.finish();
        }
    });

       builder.setNegativeButton("No", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });

       AlertDialog alert = builder.create();
       alert.show();
       super.onPause(); 
}

まず、基本的にonpause()の呼び出しで実行されるかどうかを確認したいと思います。つまり、アクティビティを一時停止し、別のアクティビティに移動し、アクティビティを再開すると、ダイアログボックスが表示されます。mi何かが足りない。

4

1 に答える 1

0

これはかなり単純です。

public void onBackPressed() {

       final Builder builder = new Builder(this);
        builder.setTitle(R.string.caption);
        builder.setMessage("Do you really want to exit?");
        builder.setPositiveButton(android.R.string.ok, new OnClickListener() {
            @Override
            public void onClick(final DialogInterface dialog, final int which) {
                 Intent intent = new Intent(YourActivity.this, YourActivity.class);
                     intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);

                     startActivity(intent);
                     YourActivity.this.finish();
                     dialog.dismiss();

            }
        });
        builder.setNegativeButton(android.R.string.cancel,
                new OnClickListener() {
                    @Override
                    public void onClick(final DialogInterface dialog,
                            final int which) {
                                                  dialog.dismiss();
                    }
                });
        final AlertDialog dialog = builder.create();
        dialog.show();

}

これで問題が解決するはずです:)

更新: アプリがバックグラウンドになると、onPause() が確実に呼び出されます。したがって、このダイアログ ボックスを onPause() 内に記述し、ネガティブ ボタンの onClick が startActivity() を Intent.FLAG_ACTIVITY_REORDER_TO_FRONT として呼び出します。

于 2012-05-30T11:58:57.600 に答える