标题几乎是不言而喻的。
架构:
我有扩展AppCompatActivity的主活动。
我还有一个抽屉布局。此菜单的每个选项都会打开一个片段。
每个片段都有自己的菜单布局,通过setHasOptions菜单(true)和自己的按钮。他们菜单的Home按钮仍然可以打开抽屉布局。
其中一个片段有一个项目列表,单击其中一个项目时,将打开一个新的子片段。(这就是问题所在)我希望这个子片段能够通过单击其工具栏上的向上图标导航到其父片段。
在替换碎片之前,我禁用抽屉开关并将原点设置为向上指示器:

        mDrawerToggle.setDrawerIndicatorEnabled(false);
        drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

        actionBar.setHomeAsUpIndicator(R.drawable.ic_arrow_back_white_24dp);
        actionBar.setDisplayHomeAsUpEnabled(true);

然后,当点击向上图标时,什么也不会发生。我调试了它,但未调用onoptionsitemselected方法。
仅供参考,我添加到菜单中的所有其他按钮(搜索、刷新等)都可以工作,并调用onoptionsitemselected。

最佳答案

如果您正在抽屉活动中实现onoptionsitemselected,那么它将不再在片段中调用,除非您在活动中返回false。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.home:
        return false; //The fragment will take care of it
    default:
        break;
    }
return false;
}

希望有帮助!
更新
您还可以尝试启动一个新的活动并将该片段加载到活动中,如我所说。因为您已经通过一个包将数据传递给您的子片段,所以您可以对活动执行同样的操作。
Intent intent = new Intent(getActivity(), NewActivity.class);
Bundle bundle = new Bundle();
bundle.putWhatever(key, value); //There's no such method, just a generalization
intent.putExtras(bundle);
startActivity(intent);

10-08 14:19