我遇到了奇怪的问题,让我说我有两个活动A和B,应用程序以活动A开始,我继续活动B按Android主页按钮,返回应用程序,它将我带回活动B.然后我按下返回按钮(要么是工具栏中的硬件),这会关闭应用程序,但它应该将我返回到活动A.活动B没有覆盖onBackPressed并且在清单中将活动A声明为PARENT_ACTIVITY。我是在没有标志的情况下用Intent开始的。知道为什么会这样吗?感谢
答案 0 :(得分:1)
在您的活动A中,当您致电活动B时,可能您有以下命令:
finish();
如果是,则应删除此行。然后,当您从活动B中按回键时,您应该返回A. 如果没有,也许尝试分享您的代码。
答案 1 :(得分:1)
后退按钮的行为取决于系统版本。支持在较旧的Android版本中提供后退导航,如下所述:
https://developer.android.com/training/implementing-navigation/ancestral.html
<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
android:name="com.example.myfirstapp.MainActivity" ...>
...
</activity>
<!-- A child of the main activity -->
<activity
android:name="com.example.myfirstapp.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="com.example.myfirstapp.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.myfirstapp.MainActivity" />
</activity>
</application>
调试回拨问题的最佳和最方便的方法是启用“不要保持活动”。开发人员选项中的选项。
这是我最好的猜测。祝你好运!
答案 2 :(得分:1)
为了在不破坏旧活动的情况下运行新活动,您必须将标志FLAG_ACTIVITY_NEW_TASK
添加到将运行活动的意图:
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
设置此标志时:
此活动将成为此历史新任务的开始 堆。任务(从启动它的活动到下一个任务 activity)定义用户可以移动的原子活动组 至。任务可以移动到前台和后台;全部 特定任务中的活动始终保持相同的顺序。
因此启动它的活动将保留在堆栈中,因此您可以再次调用它,因此即使您按下 BACK_BUTTON 也可以再次自动调用它HOME_BUTTON 早些时候。
并且您必须将@gduh答案与我的结合起来,因为您必须确保在调用finish();
时未在ActivityA
中致电ActivityB
。
答案 3 :(得分:1)
感谢您的帮助,问题是由清单android中的活动的这个标志引起的:launchMode = singleinstance(它原本不是我的项目所以我错过了,我只是希望我没有把其他东西搞砸了删除它)