我问这个因为我有点好奇。
1)如果片段已经在xml中创建,大多数谷歌演示会通过其ID找到片段。
因此,如果我们采用这种方法,我们显示片段的方式是隐藏它并显示它,因为已经创建了片段。
2)google也提供了一些示例,您可以使用构造函数创建片段并对其进行充气。如果在该片段中调用getActivity(),则getActivity()返回null的方式很奇怪。
所以如果我采取第一种方法,我必须隐藏并显示碎片。 那么为什么google不提供像onHide或onShow这样的片段的钩子 这样我们就可以正确处理事情了,如果用我们实现的函数清理自己并明确调用它们。
答案 0 :(得分:30)
如果您想在onHide
/ onShow
挂钩操作,只需覆盖
public void onHiddenChanged(boolean hidden) {
}
在你的片段中。
答案 1 :(得分:0)
通过Overrinde setUserVisibleHint,您可以轻松跟踪它。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser){
//When fragment is visible
}
Log.i("my_fragment","setUserVisibleHint: "+isVisibleToUser);
}
答案 2 :(得分:-3)
我重写下面的函数来确定是显示片段还是隐藏片段。
@覆盖 public void setMenuVisibility(final boolean visible)