我无法确定Fragment
实际出现在屏幕上的时间,并在其他Fragment
替换它时隐藏。意味着我需要知道可以提供帮助的方法。
到目前为止,我尝试了以下方法。这些方法甚至都没有调用。因为我没有在Fragments
内使用PagerAdaper
(根据SO答案)。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
}
@Override
public void setMenuVisibility(boolean menuVisible) {
super.setMenuVisibility(menuVisible);
}
最后我尝试了
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
@Override
public void onDetach() {
super.onDetach();
}
他们都在打电话,但问题是onDetach
在第二个片段onAttach
之后调用。
所以不知怎的,我什么都没有。
感谢阅读!
答案 0 :(得分:1)
在firstFragment上使用onDetach,在第二个片段上使用onActivityCreated。
答案 1 :(得分:0)
可能是下面的方法是帮助你的。它在视图可见后调用。
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
尝试以下代码隐藏片段。
final Fragment hideFragment = getFragmentManager().findFragmentById(R.id.container);
getFragmentManager()
.beginTransaction()
.add(R.id.container, fragment, fragment.getClass().getSimpleName())
**.hide(hideFragment)**
.addToBackStack(hideFragment.getClass().getSimpleName())
.commit();
当你使用.hide方法时,下面的方法肯定会调用。
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
}
答案 2 :(得分:0)
您可以使用isHidden()
了解Fragment
生命周期回调中当前状态的显示。
状态也将在onHiddenChange(boolean)
方法中调用。当附加片段时,其默认状态为 SHOW ,因此如果您希望调用onHiddenChange(boolean)
,前提是您在使用事务时应明确调用show()/hide()
。
如下:
getSupportFragmentManager().benginTranscation.add(...).show().commit();