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

标签 android android-actionbar fragment toolbar

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

在 MainActivity 中,我开始我的第一个 fragment 并初始化我的工具栏,如下所示。

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");

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

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

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

我可能做错了,可能应该使用 Activity 而不是 fragment ,但如果我这样做,我将无法为 fragment slide_in/slide_out 转换设置动画。工具栏会随着框架布局滑动,我不希望这样。

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

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

谢谢!

最佳答案

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

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);

    }

祝你好运!

关于android - 使用 Activity 的工具栏从 Fragment 向上导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46740577/

相关文章:

java - 如何在静态方法中获取Activity()?

Fragment 中 setOnClickListener 上的 java.lang.NullPointerException

android - 即使服务器发回错误,WebView 也未收到错误

android - 使用 Async Task 读取电话联系人并将它们设置为 AutoCompleteTextView 的适配器

android - 谷歌地图 v2 标记动画

android - 操作栏不显示操作项(全部溢出)Android

android - 启用/禁用 Android ActionBar.Tab

android - 相机未聚焦到谷歌地图上的所需位置

Android 3.0 ActionBar,改变颜色

android - 图书 list 项目。每本书搜索都与以前的结果重叠。你如何清除ListView?