后退按钮转到父活动,而不是转到电话主屏幕

时间:2014-07-25 03:24:05

标签: android android-activity android-fragments

我有两个活动,A y B. A是B的父活动。

使用此代码初始化第二个:

Intent intent = new Intent( this, B.class );
startActivity( intent );
this.finish();

并且B使用以下代码返回A(如注销):

Intent intent = new Intent( B.this, A.class );
intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity( intent );

为您提供更多上下文,该应用程序有一个滑动菜单,每个列表项在ListView中显示一个ListFragment。在每个视图中,后备堆栈已经被清理,并且想法是当用户按下后退按钮时,他应该按照Google documentation所述进入电话主屏幕,当用户按下应用程序图标时手机主屏幕,它需要重新初始化用户正在工作的地方。

该应用当前正在进行的操作是进入手机主屏幕,但是当您按下应用图标时,它会再次从活动A开始,即活动A和主要活动。

知道为什么吗?

3 个答案:

答案 0 :(得分:1)

尝试在startActivity() finish()之后添加。 这将使provius活动安全地关闭。

答案 1 :(得分:1)

您可以使用此代码转到手机主屏幕

        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);

覆盖onBackPressed并编写上述代码。它应该工作。

答案 2 :(得分:0)

根据我的理解,你有2个活动A&乙

您正在开始活动A&移动到活动B同样的时间调用A.this.finish()

这意味着您的堆栈中只有1个活动是活动B.

当你按下"返回"按钮,这意味着它关闭你的应用程序,从堆栈中删除剩余的活动B,所以你的堆栈变空。所以你需要按" Center"您设备的按钮,可以将您的应用活动B保持在后台(在onStop()状态下)&当您再次启动应用程序时,它将仅打开活动B(通过调用onRestart())。

我希望上面的解释足以理解上述问题。