Hes*_*sam 3 flags android android-intent
在我的菜单中,我有一些项目.Home是我希望成为我的应用程序的根目录的项目,每当用户点击它时,Android清除堆栈然后返回到主屏幕.
这是我的代码:
menu.setOnItemClickedListener(new MenuClickedListener() {
public void eventOccured(int id) {
Intent intent = null;
switch(id) {
case 1: intent = new Intent(context, More.class); break;
case 2: intent = new Intent(context, FavoriteScreen.class); break;
case 3: intent = new Intent(context, VideoShowList.class); break;
case 4: intent = new Intent(context, ShoppingList.class); break;
case 5: intent = new Intent(context, MainScreen.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
break;
}
if(intent != null)
context.startActivity(intent);
}
});
Run Code Online (Sandbox Code Playgroud)
菜单工作正常,但似乎标志不起作用,因为从主屏幕,我去第二和第三屏幕然后我点击菜单的主页项目,并回到主屏幕.现在,当我点击后退按钮时,我会转到第三个屏幕,第二个屏幕和主屏幕.
我将此菜单设计为窗口小部件,以便将其设置一次并在我的所有屏幕上重复使用它.
任何建议,将不胜感激.谢谢.
Bha*_*han 20
我试过Intent.FLAG_ACTIVITY_CLEAR_TOP但是没有得到适当的解决方案,所以最终这对我有所帮助
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
startActivity(mainIntent);
这将清除所有堆栈并仅运行LoginActivity
Gau*_*ora 18
阅读一次,你将永远不会遇到使用flag_activity_clear_top的问题
以下是有关Flag_Activity_Clear_Top用法的简单说明.
适合使用的一种衬里配方:
它始终清除调用活动和被调用活动之间的中间活动(如果有).
这是一个活动流程:
活动A - >活动B - >活动C(使用标志活动清除顶部转到D) - >活动D.
在上述顺序中,如果我们按回到D,那么我们将得到活动C->活动B->活动A,因为活动C和活动D之间没有中间活动
这里的一些开发者的神话是 -
通过使用来自C的标记活动清除顶部到达活动D后,他们期望在按下来自D的后退键时将它们带到应用程序之外.这将永远不会发生.
Flag_Activity_Clear_Top始终清除两个活动之间的中间活动(如果有的话)
尝试使用这种intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);地质储量 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent intent = new Intent(getApplicationContext(),
yourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11457 次 |
| 最近记录: |