Android Intent.FLAG_ACTIVITY_CLEAR_TOP或Intent.FLAG_ACTIVITY_NEW_TASK无效

时间:2015-03-17 12:35:21

标签: android android-intent android-activity

我正在开发小型Android应用程序,其中我有3个活动说A1,A2,A3。我可以从A2回到A1但是当我启动A3然后如果用户点击后退按钮然后我想要关闭所有以前的窗口。我通过以下方式尝试了这个:

Intent intent = new Intent(LoginActivity.this, DashboardActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);

但这不适合我。我正在使用动作栏活动。我试图清除任务:

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);

以上清理任务对我有用,但是它以一些空白的白色屏幕启动我的A3。

3 个答案:

答案 0 :(得分:0)

试试这个

Intent intent = new Intent(LoginActivity.this, DashboardActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

答案 1 :(得分:0)

使用此

Intent intent = new Intent(LoginActivity.this, DashboardActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
finish(); // call this to finish the current activity

答案 2 :(得分:0)

您是否已为清单中的所有活动声明android:launchMode="singleTop"?另外,将其声明为MainActivity

<activity android:name=".MyActivity" android:launchMode="singleTop" ... />

通常,当我们不在清单中声明launchMode时,就会发生这种情况。虽然您使用的是Intent.[MODE],但您需要此属性。有关launchMode

的详细信息,请参阅此documentation