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

Rad*_*ian 6 android parent back android-intent android-activity

我有以下场景:

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

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

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

Juo*_*nis 12

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

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

  • 我的意思是:如果在活动A的左上角按下并不总是将您带到活动B,那么活动B在逻辑上不是活动A的父级.因此,您不应将其定义为清单中的父级.否则你会遇到类似于你现在遇到的问题.至于默认代码问题 - 并非每个活动都启用了左上角的触摸,因此它不是一个总是有用的代码. (2认同)