ViewPager在更换时过早隐藏内容

时间:2013-05-21 09:21:18

标签: android android-fragments android-viewpager android-library

我正在使用兼容性库中的ViewPagerFragmentStatePagerAdapter。 我有一个SherlockFragment,它只是一个带ViewPager的布局:

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <android.support.v4.view.PagerTitleStrip
        android:id="@+id/pager_title_strip"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        style="@style/TitleStrip" />

</android.support.v4.view.ViewPager>

大部分时间都有一些孩子正常展示。虽然当我想使用带有动画的Fragment替换此FragmentTransaction时,其内容(显示的子项)会在动画发生之前消失。唯一剩下的就是PagerTitleStrip。这是我用于替换的代码:

Fragment fragment = new QueueListFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out);
ft.replace(R.id.fragment_holder, fragment);
ft.addToBackStack(null);
ft.commit();

根据我的检查,在转换开始之前,片段及其子片段上调用了onDestroyView,这看起来很奇怪。我希望一旦视图被有效替换(转换后)就会调用它。

ViewPager的子片段没有错,因为我尝试了一个显示红色布局的非常简单的片段,问题是相同的。

应用程序内部的其他类型的碎片不会发生此问题。如果我使用ft.add(R.id.fragment_holder, fragment)而不是ft.replace(R.id.fragment_holder, fragment),则不会发生此问题。

如果有人对这种行为有所了解,我们将不胜感激。

0 个答案:

没有答案