Java 覆盖导航

Java 覆盖导航,java,android,Java,Android,我有一个问题,我的两个活动都有一个联系人按钮,单击它会启动联系人活动的新意图。鉴于我只能通过清单将父类设置为这两个活动中的一个,当导航带到Contact活动时,它将始终将用户返回到定义的父活动。我希望它基本上返回到打开它的活动,我想这基本上会使他们都成为父母 我的猜测是从清单中删除父项,并以某种方式以编程方式覆盖/添加在单击联系人活动时仅调用finish()的导航 任何帮助都将不胜感激,谢谢 您需要覆盖onOptionsItemSelected并处理向上导航,如下所示。最佳实践是从BaseAct

我有一个问题,我的两个活动都有一个联系人按钮,单击它会启动联系人活动的新意图。鉴于我只能通过清单将父类设置为这两个活动中的一个,当导航带到Contact活动时,它将始终将用户返回到定义的父活动。我希望它基本上返回到打开它的活动,我想这基本上会使他们都成为父母

我的猜测是从清单中删除父项,并以某种方式以编程方式覆盖/添加在单击联系人活动时仅调用finish()的导航


任何帮助都将不胜感激,谢谢

您需要覆盖onOptionsItemSelected并处理向上导航,如下所示。最佳实践是从BaseActivity重写,并从自定义活动扩展BaseActivity

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case android.R.id.home: {
            finish();
            return true; // make sure to return true here.
        }
    }
    return super.onOptionsItemSelected(item);
}

发布您的代码您尝试了什么?假设您有活动A、B和联系人活动。您想从A和B打开ContactActivity,然后。。我不清楚您的要求是什么,我希望联系人中的向上导航返回到a或B,具体取决于最初触发的意图。它背后没有太多代码,只是通过清单将父活动设置为活动a,因此向上导航总是从联系人活动返回到活动a。显然,设置父项不是一个好方法,因为我希望向上导航返回到活动a或活动B,具体取决于最初打开的联系人活动。请参阅我的答案。希望这是您所期望的结果。该方法不起作用,仍然会崩溃,但当我在按钮上设置finish()时,它会起作用。。。古怪的向上导航仍必须执行finish()以外的其他操作;,或者生命周期必须不同?很抱歉,它现在工作了,忘记了返回true;我为什么要用returntrue;而不是休息;你需要发布代码。这似乎是另一个问题。结束后你有什么活动吗?很好。如果未返回true super.onoptions,将调用ItemSelected并尝试返回映射到主目录的父活动。