我希望在每个Fragment
中ActionBar
的标题都会被调整。例如,如果我选择选项" Lists" (这是Fragment
),ActionBar
的标题必须是"列表"。
我可以使用以下代码执行此操作:
getActivity().setTitle("Lists");
但当我回到MainActivity
时(使用菜单选项或手机上的后退按钮),它会保留标题" Lists"而不是"我的申请"这是默认的标题。
如果我尝试在MainActivity
上设置标题:
setTitle("My application");
它没有改变。
如何维护MainActivity
的标题并修改每个Fragments
中的标题?
提前致谢!
答案 0 :(得分:1)
最后,我可以在输入MainActivity
后修改Fragment
的标题,并修改其中ActionBar
的标题。我需要用两个不同的事件来改变它:当我点击应用程序的菜单时,当我按下手机的后退按钮时。我将把答案分成两部分,每部分一个:
- 在手机上按后退按钮时更改MainActivity上的标题
您需要在onBackPressed()
上使用MainActivity.class
方法检测事件,然后使用setTitle
方法更改ActionBar
的标题。
@Override
public void onBackPressed() {
setTitle("Lists");
}
- 按下选项" Home"更改MainActivity上的标题在你的菜单中。
在onNavigationItemSelected
方法上,您可以检测到何时按下选项" Home"然后开始一个新的Fragment
(让我们称之为MainFragment
),这会返回一个空布局,这样如果你在另一个Fragment
,例如AnotherFragment
(与另一个ActionBar
标题)你按下你的" Home"菜单中的选项,您可以使用以下代码再次将MainActivity
的标题设置为MainFragment
中的默认标题:
getActivity().setTitle("Lists");
通过这种方式,您可以更改MainActivity
维护其布局的标题。
答案 1 :(得分:0)
尝试使用getSupportActionBar()。setTitle(“title”);
这就是我用的东西,似乎运作良好。这是一个使用我的代码的例子,我将片段添加到viewpager。
DeadlineExceededError
在那个例子中,我只是将工具栏的标题设置为某个东西,具体取决于它从前一个类获得的意图,因为该片段用于多组数据。
答案 2 :(得分:0)
将此代码放在活动和片段
的https://www.storeurl.com/wc-api/v3/products?filter[order]=asc&filter[orderby]=meta_value_num&filter[orderby_meta_key]=_regular_price
上
<强>片段:强>
onResume()
<强>活动:强>
@Override
public void onResume() {
super.onResume();
if(getActivity().getSupportActionBar()!=null)
getActivity().getSupportActionBar().setTitle("Lists");
}