我在活动中使用标签片段,操作栏托管标签。
我想要做的是,无论何时在视图中出现(或重新出现)片段(由用户选择),我都会开始做某事。在这种情况下,我无法使用片段的onResume
,因为所有标签都不会真正暂停'当用户选择另一个标签时,不会调用onResume
我可以使用托管活动中的以下两个事件,但我不想要它们,因为我希望片段应该自己知道这个逻辑并执行该任务。任何的想法? TKS。
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
// When the given tab is selected, switch to the corresponding page in the ViewPager.
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
答案 0 :(得分:38)
按照in this answer所述,在片段中尝试setUserVisibleHint()。当片段在选定的选项卡中时,将使用true调用setUserVisibleHint(),并且当片段不是选定的选项卡时,将使用false调用setUserVisibleHint()。这适用于我使用支持库。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser)
Log.d("MyFragment", "Fragment is visible.");
else
Log.d("MyFragment", "Fragment is not visible.");
}
答案 1 :(得分:8)
您可以覆盖setUserVisibleHint(boolean isVisibleToUser)
或
onHiddenChanged (boolean hidden)
方法。
如果是setUserVisibleHint(boolean isVisibleToUser)
,
片段可见时isVisibleToUser=true
,隐藏片段时isVisibleToUser=false
如果是onHiddenChanged (boolean hidden)
,hidden:True
如果是{
片段现在是隐藏的,如果不可见则为假。
答案 2 :(得分:-1)
我没有对此进行测试,但我相信您可以使用片段的onHiddenChanged
方法
来自文档:
当隐藏状态(由片段的isHidden()返回时更改。
http://developer.android.com/reference/android/app/Fragment.html#onHiddenChanged%28boolean%29