片段再次可见时的setTitle

Fra*_*eye 11 android android-fragments

我有FragmentA和FragmentB,当FragmentA变得可见时设置我的Activity的标题有问题.

  1. FragmentA可见(未添加到Backstack)
  2. 添加FragmentB(添加到backstack)
  3. 按下后退按钮,不是默认实现,但需要在片段中捕获它,但我这样做 getActivity().getSupportFragmentManager().popBackStack();

现在当FragmentA返回可见时,必须再次更改Activity的标题,例如,FragmentA title ="A",FragmentB title ="B".但是当FragmentA返回可见时,标题仍然是"B",因为在FragmentA中没有调用onResume.我可以选择在FragmentA中始终将标题设置为"A".

码:

FragmentA

@Override
public void onResume() {
        super.onResume();
        getActivity().setTitle("POI's");       
}
Run Code Online (Sandbox Code Playgroud)

FragmentB

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

Say*_*yem 17

我在一个Activity上测试了两个片段,它运行良好.请参阅以下代码.

片段A:显示应用名称

@Override
public void onResume() {
    super.onResume();
    getActivity().setTitle(R.string.app_name);
}
Run Code Online (Sandbox Code Playgroud)

片段B:显示应用名称

@Override
public void onResume() {
    super.onResume();
    getActivity().setTitle("fragment B");
}
Run Code Online (Sandbox Code Playgroud)

片段A到B交易代码:

getActivity().getSupportFragmentManager().beginTransaction()
            .replace(R.id.container,new FragmentB())
            .addToBackStack(null)
            .commit();
Run Code Online (Sandbox Code Playgroud)

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