【发布时间】:2014-09-03 08:42:37
【问题描述】:
我有 FragmentA 和 FragmentB,但在 FragmentA 重新可见时设置我的 Activity 的标题时遇到问题。
流程
- FragmentA 可见(未添加到后台堆栈)
- 添加 FragmentB(添加到 backstack)
- 按下后退按钮,不是默认实现,但需要在片段中捕获它,但我这样做
getActivity().getSupportFragmentManager().popBackStack();
现在当 FragmentA 重新可见时,必须再次更改 Activity 的标题 比如,FragmentA 标题 = “A”,FragmentB 标题 = “B”。但是当 FragmentA 重新可见时,标题仍然是“B”,因为在 FragmentA 中没有调用 onResume。在 FragmentA 中始终将标题设置为“A”的选项是可见的。
代码:
片段A
@Override
public void onResume() {
super.onResume();
getActivity().setTitle("POI's");
}
片段B
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
...
getActivity().setTitle("POI");
...
}
【问题讨论】:
-
您可以在替换 Fragment 的同时更改 Title,而不是在这里更改 Title
-
@SilentKiller 您的评论没有描述当 FragmentB 按下后退按钮消失时如何将标题设置回来。
-
AFAIK,onResume() 应该总是在片段/活动变得可见时被调用。为什么要覆盖后退按钮功能?您是否可以尝试仅让测试保留默认的后退按钮功能?
-
@Francesco 您只需要在 onCreateView 更改标题以用于简历片段
-
@helleye 尝试使用默认的后退按钮行为,但没有成功。只有在调用 Activity 的 onResume 时才会调用 Fragment 的 onResume。但是没有调用 Activity 的 onResume,因为我没有离开 Activity。