使用 Activity 的工具栏从 Fragment 向上导航

Posted

技术标签:

【中文标题】使用 Activity 的工具栏从 Fragment 向上导航【英文标题】:Use Activity's toolbar to Navigate up from Fragment 【发布时间】:2018-03-26 05:15:51 【问题描述】:

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

在 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 行汉堡,按下它会打开导航抽屉并显示我的片段列表。

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

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

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

如果有任何建议,我将不胜感激。

谢谢!

【问题讨论】:

【参考方案1】:

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

getSupportActionBar().setHomeAsUpIndicator(R.drawable.your_arrow_icon);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

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

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

    

祝你好运!

【讨论】:

以上是关于使用 Activity 的工具栏从 Fragment 向上导航的主要内容,如果未能解决你的问题,请参考以下文章

Fragmen直接来回切换deno

安卓开发之Fragment数据传输到Activity+实例分析

Fragment 使用详解

android Fragment

使用 Activity 的工具栏从 Fragment 向上导航

安卓第十天笔记-fragment