Android onBackPressed没有收回上一次活动

时间:2015-08-24 12:23:02

标签: android android-activity

这是我的第二项活动,

@Override
public void onBackPressed() {

    super.onBackPressed();
    try {
            object.put_stats(getApplicationContext());
        }
    } catch (JSONException | IOException e) {
        e.printStackTrace();
    }

    this.finish();
    overridePendingTransition(R.anim.slideouttoright, R.anim.slideinfromleft);

}

但是当我按下后退按钮时,我会被定向到主屏幕。 这是我称之为第二个活动的地方,

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            startActivityForResult(intent, 1);
            overridePendingTransition(R.anim.slideinfromright, R.anim.slideouttoleft);

我想在按下后退按钮时从第二个活动转到最后一个活动。我不想通过启动意图来开始一项新活动。

3 个答案:

答案 0 :(得分:0)

intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

setFlags将替换您首先添加的标记。这可能不是你想要的。

您的意图只有Intent.FLAG_ACTIVITY_CLEAR_TOP作为标志,这意味着:

  

如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在在最前面)作为新意图的旧活动。

所以很可能你之前的Activity只是从堆栈中删除,所以无处可去。在这两种情况下都使用addFlags

答案 1 :(得分:0)

为了简单起见,我建议您使用Fragment 使用Fragment,您不必在addToBackStack方法的帮助下担心这一点。 如果不是太晚或费力将您的活动迁移到碎片。

答案 2 :(得分:0)

你可以添加你的清单吗?

你确定你已经将第二项活动设定为第一项活动的孩子吗?

还检查Android 4.0及更低版本的向后兼容性

    <activity
    android:name="com.example.myfirstapp.SecondActivity"
    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>

您在此处解释了导航和父活动:

http://developer.android.com/intl/es/training/implementing-navigation/ancestral.html#SpecifyParent