没有调用片段onHiddenChanged

时间:2012-03-06 19:21:22

标签: android fragment android-4.0-ice-cream-sandwich hidden

我最近将Fragments添加到我的应用程序中。对于新的应用程序,我需要得到 我的片段显示后立即通知。所以我可以尽快做一些计算 片段再次显示。

My Fragment与TabIndicator一起使用,它只使用了一个FragmentClass 几次。

这是正常的标准覆盖类:

@Override
public void onHiddenChanged(boolean hidden) {
    super.onHiddenChanged(hidden);
}

3 个答案:

答案 0 :(得分:11)

我有同样的问题。

我使用标准指南实践工作片段(Building a Flexible UI)。 我有两个片段(ListItemsFragment和InfoItemFragment)。 当使用正常的屏幕大小时,我在InfoItemFragment和。替换ListItemsFragment onHiddenChanged方法不会调用自动。

FragmentTransaction mFragmentTransaction = getFragmentManager().beginTransaction();
mFragmentTransaction.replace(R.id.container_fragment, new InfoItemFragment(), "tag_fr_infoItem");
mFragmentTransaction.addToBackStack(null);
mFragmentTransaction.commit();

我认为我们必须调用hide方法FragmentTransaction。例如:

    ListItemsFragment  mListItemsFragment;
    FragmentTransaction mFragmentTransaction = getFragmentManager().beginTransaction();
    mFragmentTransaction.replace(R.id.container_fragment, new InfoItemFragment(), "tag_fr_infoItem");
    if (mListItemsFragment != null) {
        mFragmentTransaction.hide(mListItemsFragment);
    }
    mFragmentTransaction.addToBackStack(null);
    mFragmentTransaction.commit();

现在onHiddenChanged的方法工作正常。当用户点击后退按钮时,mListItemsFragment再次显示,方法onHiddenChanged称为自动。

在文件中说: 只要片段从

更改状态,就会调用

我认为我们必须手动更改值然后调用方法。

答案 1 :(得分:8)

仍在寻找答案? onHiddenChanged在第一次显示片段时不会被调用。只有当它改变状态时。

来自文档:

  

当片段的隐藏状态(由isHidden()返回时)发生更改时调用。片段开始没有隐藏;只要片段从那里改变状态,就会调用它。

答案 2 :(得分:3)

您可以使用 setUserVisibleHint 方法解决类似的问题。希望它可以帮到你。

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser) {
        // Do some your work
    } else {
        // Do your Work
    }
}