我正在使用ViewPager兼容性库中的一个FragmentStatePagerAdapter.我有一个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>
Run Code Online (Sandbox Code Playgroud)
它有几个孩子在大多数时间正确显示.虽然当我要取代这个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();
Run Code Online (Sandbox Code Playgroud)
根据我的检查,onDestroyView在转换开始之前调用片段及其子片段,这对我来说很奇怪.一旦视图被有效替换(转换后),我希望它被调用.
这个子片段ViewPager没有错,因为我尝试了一个非常简单的片段显示红色布局,问题是一样的.
应用程序内部的其他类型的片段不会发生此问题.如果我使用ft.add(R.id.fragment_holder, fragment)而不是,则问题不会发生ft.replace(R.id.fragment_holder, fragment).
如果有人对这种行为有任何线索,我将不胜感激.