选择选项卡片段时会触发什么事件

时间:2014-05-31 12:51:44

标签: android android-tabs

我在活动中使用标签片段,操作栏托管标签。 我想要做的是,无论何时在视图中出现(或重新出现)片段(由用户选择),我都会开始做某事。在这种情况下,我无法使用片段的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) {
    }

3 个答案:

答案 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