如何在不更改MainActivity标题的情况下更改片段的标题?

时间:2016-08-23 12:36:58

标签: android android-fragments android-actionbar

我希望在每个FragmentActionBar的标题都会被调整。例如,如果我选择选项" Lists" (这是Fragment),ActionBar的标题必须是"列表"。

我可以使用以下代码执行此操作:

getActivity().setTitle("Lists");

但当我回到MainActivity时(使用菜单选项或手机上的后退按钮),它会保留标题" Lists"而不是"我的申请"这是默认的标题。

如果我尝试在MainActivity上设置标题:

setTitle("My application");

它没有改变。

如何维护MainActivity的标题并修改每个Fragments中的标题?

提前致谢!

3 个答案:

答案 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");
    }