如何知道屏幕上显示的片段[不在PagerAdapter中]?
我很难找出Fragment
实际显示在屏幕上的情况,并在其他Fragment
替换它时隐藏。意味着我需要知道可以提供帮助的方法。如何知道屏幕上显示的片段[不在PagerAdapter中]?
到目前为止,我已尝试使用以下方法。这些方法甚至没有调用。原因我不使用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
。
所以不知何故,我什么都没有结束。
感谢您的阅读!
可能下面的方法是帮助你。它在视图可见之后调用。
@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);
}
您可以使用isHidden()
知道目前的状态在Fragment
生命周期回调的显示。
也会在onHiddenChange(boolean)
方法中调用状态。附加片段时,其默认状态为SHOW,因此如果您想要调用onHiddenChange(boolean)
,前提是在使用事务时应明确调用show()/hide()
。
如此: getSupportFragmentManager().benginTranscation.add(...).show().commit();
使用onDetach上firstFragment和onActivityCreated上第二片段。
漂亮!但问题是'onStop'在下一个'Fragment的onAttach'方法之后被调用。 –
在第一个片段上使用onDetach,在第二个片段上使用onActivityCreated .. onActivityCreated将在第一个片段分离后调用。 –
试试这个。它会帮助.. –
要知道'Show'状态是好的,但隐藏状态呢? –
如果你使用transaction.add()和transaction.hide()方法,然后确定@Override public void onHiddenChanged(boolean hidden){ super.onHiddenChanged(hidden); } 这个方法会调用。 –