当按下导航栏后退按钮时,Android活动将返回启动它而不是父活动的活动

时间:2013-10-21 08:32:29

标签: android android-intent android-activity parent back

我有以下情况:

在android清单中我有三个活动: ActivityA ActivityB - ActivityA的父级 ActivityC

我想要做的是使用intent.StartActivity()从ActivityC启动ActivityA。活动已成功启动。现在我想使用操作栏的后退按钮(左上角)返回ActivityC,但由于ActivityA将ActivityB作为父级(如在android清单中声明的​​),操作栏后退按钮将我带到ActivityB而不是之前的ActivityC。如果我使用后面的键盘按钮,我会被重定向到ActivityC。

我可以做些什么来在“导航回”情况下获得相同的结果。我正在寻找的结果是重定向到启动ActivityA的活动而不是它的父活动。有可能吗?

3 个答案:

答案 0 :(得分:12)

您不应将Activity定义为清单中Activity的父级。相反,在ActivityA中处理onOptionsItemSelected,如下所示:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            finish();
        }
    return super.onOptionsItemSelected(item);
    }

答案 1 :(得分:3)

当您调用startActivity()时,请执行以下操作:

Intent intent = new Intent(callingActivity.this, destinationActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

答案 2 :(得分:2)

尝试以下方法:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;  
    }

    return super.onOptionsItemSelected(item);
}

这将模拟后退按钮按下,这将另外保留您来自Activity的状态(标签,滚动位置)。

(感谢@Kise在https://stackoverflow.com/a/31331757/2703209中提出建议<)