所以基本上我想改变起始活动,就像我在一个应用程序中有两个应用程序,当我转到第二个应用程序时,我必须清除活动堆栈.那可能吗?有任何想法吗?
解决方法
So it is basically I want to change the starting Activity,it is like
I have two Apps in one App and when I flip to the second App I have to
clear the Activity Stack.
我会这样做:
创建dispatcherActivity,它是在启动应用程序时启动的活动.此活动是您的任务的根活动,负责启动A1或A2,取决于…而不是自己调用finish()(即:它将被A1或A2覆盖,但仍然位于活动的根部堆).
在A1中,捕获“后退”键并告诉dispatcherActivity退出如下:
@Override public void onBackpressed() { Intent intent = new Intent(this,dispatcherActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addExtra("exit","true"); startActivity(intent); }
这将清除任务堆栈到根活动(dispatcherActivity),然后再次使用此意图启动dispatcherActivity.
在C1中,要启动A2,请执行以下操作:
Intent intent = new Intent(this,dispatcherActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addExtra("A2","true"); startActivity(intent);
这将清除任务堆栈到根活动(dispatcherActivity),然后再次使用此意图启动dispatcherActivity.
在dispatcherActivity中,在onCreate()中,您需要根据intent中的extras确定要执行的操作,如下所示:
Intent intent = getIntent(); if (intent.hasExtra("exit")) { // User wants to exit finish(); } else if (intent.hasExtra("A2")) { // User wants to launch A2 Intent a2Intent = new Intent(this,A2.class); startActivity(a2Intent); } else { // Default behavIoUr is to launch A1 Intent a1Intent = new Intent(this,A1.class); startActivity(a1Intent); }
在A2中,捕获“后退”键并告诉dispatcherActivity使用与A1中相同的onBackpressed()覆盖来退出.
注意:我只是输入了这段代码,所以我没有编译它,它可能不完美.你的旅费可能会改变
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。