2016-08-23 65 views
0

我遇到了奇怪的问题,可以说我有两个活动A和B,应用程序以活动A开始,我继续活动B按下Android主页按钮,返回到带给我的应用程序回到Activity B,然后按下Back按钮(在工具栏上的硬件)并关闭应用程序,但它应该让我返回到活动A.活动B没有覆盖onBackPressed并且活动A在manifest中声明为PARENT_ACTIVITY。我用无意义的Intent开始它。任何想法为什么发生这种情况由于当按下主屏幕按钮时,背景中的活动被杀死

+1

发布您的源代码 – Krish

回答

1

感谢您的帮助,问题是由这个标志导致的清单android中的activity:launchMode = singleinstance(它本来不是我的项目,所以我错过了,我只是希望我没有通过删除它来解决其他问题)

1

在您的活动。当你打电话给你的活动B,也许你有下面的命令:

finish(); 

如果是的话,你应该删除此行。然后,当您从活动B中按回密钥时,您应该返回A. 如果没有,也许尝试分享您的代码。

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> 

调试回堆问题的最佳和最方便的方法是使“不保留活动”选项开发者选项。

这是我最好的猜测。祝你好运!

1

为了不破坏老的一个运行一个新的活动,您必须将标志FLAG_ACTIVITY_NEW_TASK添加到将运行该活动的意图:

Intent intent = new Intent(MainActivity.this, MainActivity2.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

如设置此标志时:

此活动将成为此历史记录 堆栈上新任务的开始。任务(从开始它到下一个任务 活动的活动)定义用户可以将 移动到的活动的原子组。任务可以移动到前台和后台;特定任务中的所有 活动始终保持相同的顺序。

所以它开始它会留在堆栈,因此可以再次调用它,因此它也可以再次自动按BACK_BUTTON时,即使您按下HOME_BUTTON前面提到的那种活动。


,你必须@gduh答案与我相结合,为确保你必须确保你是不是在ActivityA调用finish();同时调用ActivityB

相关问题