我有一个主屏幕和一个滑动菜单。 当应用程序启动时,将显示主屏幕。 如果打开菜单并单击项目,则会启动新的活动(A1)。这个新的活动A1可以启动活动A1b。在这种情况下,如果用户按下后退按钮,他应该返回A1。 如果您在菜单上选择另一个项目,我希望从后面的堆栈中删除A1和A1b。
但是我希望用户总是回到最后一个主屏幕上"返回"在退出应用程序之前按下。
示例
从Home开始,用户在菜单上选择A1,然后按A1上的按钮转到A1b。
现在返回堆栈:主页| A1 | A1b
用户选择其他项目A2
现在返回堆栈:主页| A2。
为此,我在考虑使用Tasks,并在启动新Activity时为intent设置适当的标志。但它没有用。
我该如何实现呢?
答案 0 :(得分:0)
你设置了什么旗帜?
为后退按钮创建一个方法并将其放入其中:
options.url = encodeUrl(options.url);
答案 1 :(得分:0)
添加"完成();"在所有chield活动的onStop(){}内。
喜欢:
@Override
protected void onStop() {
super.onStop();
finish();
}
答案 2 :(得分:0)
不起作用,因为应用程序在“最近的”应用程序中出现两次。
我感谢this article找到了解决方案。
家庭活动应该是一项任务。
在AndroidManifest
中<activity
android:name=".HomeActivity"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
然后HomeActivity正常启动Activity A1,没有任何特定标志。 A1发射A1b也是如此。 当我们想要启动A2时,我们清除当前任务:
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
由于HomeActivity属于他自己的任务(感谢“singleInstance”启动模式(see doc)),因此它不受影响并且仍然存在。所以现在推出A2,A1和A1b消失了。如果我按“返回”,则显示主页活动。