2

新しいアクティビティに進む前に、スタック内のすべてのアクティビティを閉じたいです。

これは私のコードです

Intent i=new Intent(first.this,secondsct.class);
                        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        //i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                        //i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                        //i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(i);
                        finish();

しかし、これは機能していません。私はこれを以前に試しましたが、今は試していません。どうしてか分かりません。何が原因かわかる方いますか?

4

4 に答える 4

7

Intent.FLAG_ACTIVITY_CLEAR_TOP を試しましたが、適切な解決策が得られなかったので、最終的にこれが役立ちます

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
startActivity(mainIntent);

これにより、すべてのスタックがクリアされ、LoginActivity のみが実行されます

于 2014-04-08T05:17:07.643 に答える
1

FLAG_ACTIVITY_CLEAR_TOP と合わせてお試しいただけますFLAG_ACTIVITY_NEW_TASK

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP)

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

于 2012-08-25T22:13:13.810 に答える
0

終了したいときはいつでもこの機能を使用してください。これがあなたの問題を解決することを願っています

 public void exit()
    {
         Intent intent = new Intent(Intent.ACTION_MAIN);
         intent.addCategory(Intent.CATEGORY_HOME);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         startActivity(intent);
    }
于 2014-04-08T05:23:58.397 に答える