恢复片段时使用 setSupportActionBar() 设置工具栏
Posted
技术标签:
【中文标题】恢复片段时使用 setSupportActionBar() 设置工具栏【英文标题】:Setting Toolbar using setSupportActionBar() when resuming a Fragment 【发布时间】:2015-01-22 19:29:48 【问题描述】:在我的应用中,我有:
ActionBarActivity 一个 带有 Toolbar1 的 Fragment1 带有 Toolbar2 的 Fragment2ActionBarActivity 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() 设置工具栏