使用“活动”工具栏从“片段”中向上导航

时间:2017-10-14 03:30:02

标签: android android-actionbar fragment toolbar

在我的应用中,MainActivity使用导航抽屉来托管多个片段。 MainActivity提供工具栏,片段内容显示在框架布局的工具栏下方。

在MainActivity中,我启动第一个片段并初始化我的工具栏,如下所示。

fragmentManager.beginTransaction().replace(R.id.content_frame, new FirstFragment()).commit();

toolbar = (Toolbar) findViewById(R.id.toolbar);

setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Fragment 1");

我的一个片段需要一个子片段。我想在该子片段中添加一个后退按钮,并覆盖MainActivity中的onBackPressed()。

我的工具栏目前只显示3行汉堡包,按下后会打开导航抽屉并显示我的片段列表。

我不知道如何在我的subfragment中显示后退箭头而不是汉堡包。然后我需要捕获onBackPressed()事件并处理它。

我可能做错了,可能应该使用活动而不是片段,但如果我这样做,我将无法动画片段slide_in / slide_out过渡动画。工具栏会随着框架布局一起滑动,我不希望这样。

我希望片段内容显示转换,而工具栏仍保留在原位。正如您在View Pager中所期望的那样。

我很感激任何建议。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以更改调用这些行的“主页图标”:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            finish();
            return true;
        }
        return super.onOptionsItemSelected(item);

    }

为了处理“主页点击”,您必须覆盖onOptionsItemSelected并处理主MenuItem(android.R.id.home)的点击监听器。

windowSoftInputMode
祝你好运!