【问题标题】:Setting Toolbar using setSupportActionBar() when resuming a Fragment恢复片段时使用 setSupportActionBar() 设置工具栏
【发布时间】:2015-01-22 19:29:48
【问题描述】:

在我的应用中,我有:

  • ActionBarActivity 一个
  • 带有 Toolbar1 的 Fragment1
  • 带有 Toolbar2 的 Fragment2

ActionBarActivity A 显示 Fragment 1(它使用 Activity 的 setSupportActionBar() 方法将 toolbar1 设置为操作栏)。

按下按钮,显示 Fragment 2(使用 FragmentTransation 的 add() 方法),现在 Fragment2 使用 setSupportActionBar() 将工具栏 2 设置为操作栏。

按 back 会弹出 backstack 以再次显示 Fragment1。这里我想再次将toolbar1设置为actionbar。

实现这一目标的最简单方法是什么? (希望不要试图了解显示的是哪个片段并从每个片段设置工具栏)

【问题讨论】:

    标签: android android-fragments android-actionbar android-toolbar


    【解决方案1】:

    使用onBackStackChangedListener.

            getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() {
            @Override public void onBackStackChanged() {
                //get the fragment.
                if (fragment instanceof BaseFragment) {
                    //set action bar
                    setActionBar(((BaseFragment)fragment).getActionBar());
                }
    
            }
        });
    

    【讨论】:

    • 什么是“获取片段”?我想要一些通用的东西,适用于我的所有片段(不是通过标签查找每个片段)
    • 您需要获取对当前正在显示的片段的引用。使用 findFragmentById。
    • 如果每个片段设置不同的ActionBar,如何使其通用?
    • 我在寻找什么 id?正如我所说,我不想一个一个地检查
    • 通过让片段实现为活动提供工具栏的接口
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多