片段再次可见时的setTitle

时间:2014-09-03 08:42:37

标签: android android-fragments

我有FragmentA和FragmentB,并且在FragmentA变得可见时设置我的Activity的标题时出现问题。

流量

  1. FragmentA Visible(未添加到Backstack)
  2. 添加FragmentB(添加到Backstack)
  3. 按下后退按钮,不是默认实现,但需要在片段中捕获它,但我做getActivity().getSupportFragmentManager().popBackStack();
  4. 现在当FragmentA可见时,必须再次更改活动的标题 比如,FragmentA title =“A”,FragmentB title =“B”。但是当FragmentA返回可见时,标题仍然是“B”,因为在FragmentA中没有调用onResume。我可以选择在FragmentA中始终将标题设置为“A”。

    代码:

    FragmentA

    @Override
    public void onResume() {
            super.onResume();
            getActivity().setTitle("POI's");       
    }
    

    FragmentB

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
            ...
            getActivity().setTitle("POI");
            ...
    }
    

2 个答案:

答案 0 :(得分:16)

我测试了一个Activity,其中有两个片段工作正常。请参阅以下代码。

片段A:显示应用名称

@Override
public void onResume() {
    super.onResume();
    getActivity().setTitle(R.string.app_name);
}

片段B:显示应用名称

@Override
public void onResume() {
    super.onResume();
    getActivity().setTitle("fragment B");
}

片段A到B的交易代码:

getActivity().getSupportFragmentManager().beginTransaction()
            .replace(R.id.container,new FragmentB())
            .addToBackStack(null)
            .commit();

<强>更新 需要替换像“replace(R.id.container,new FragmentB())”之类的片段,而不是将其添加到FragmentManager以更改活动的标题。

答案 1 :(得分:3)

尝试这样做

getActivity().getActionBar().setDisplayShowTitleEnabled(true);

getActivity().getActionBar().setTitle("your title");