恢复片段时使用 setSupportActionBar() 设置工具栏

Posted

技术标签:

【中文标题】恢复片段时使用 setSupportActionBar() 设置工具栏【英文标题】:Setting Toolbar using setSupportActionBar() when resuming a Fragment 【发布时间】: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。

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

【问题讨论】:

【参考方案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?正如我所说,我不想一个一个地检查 通过让片段实现为活动提供工具栏的接口

以上是关于恢复片段时使用 setSupportActionBar() 设置工具栏的主要内容,如果未能解决你的问题,请参考以下文章

恢复片段时使用 setSupportActionBar() 设置工具栏

“不要保留活动” - 当应用程序恢复时,片段仅可见一秒钟

通过底部导航栏更改片段时恢复片段状态

在片段更改时恢复窗口插图

如何使用 onSaveInstanceState 在我的片段上保存和恢复接口

从其他活动返回到同一片段时,如何保存和恢复片段中 RecyclerView 的滚动位置?