我在自定义的Fragment转换动画过程中,遇到了屏幕方向改变后片段排序的问题。
如果我在恰好合适的时间旋转屏幕,那么片段会被添加,而
我按照以下方式添加我的片段:
我已经花费了很多时间搜索有关这个问题的信息。我在这里看到了一些信息:Android multiple fragment transaction ordering,以及https://code.google.com/p/android/issues/detail?id=69403&thanks=69403&ts=1399482444和https://code.google.com/p/android/issues/detail?id=31116。
如果我在恰好合适的时间旋转屏幕,那么片段会被添加,而
MyFragment2
会处于本应该是MyFragment1
的位置。我按照以下方式添加我的片段:
final FragmentManager fm = activity.get().getFragmentManager();
final FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(
R.animator.slide_in_left,
R.animator.slide_out_top,
R.animator.slide_in_bottom,
R.animator.slide_out_right);
ft.replace(R.id.container,
MyFragment1.newInstance(), MyFragment1.TAG);
ft.add(R.id.container,
MyFragment2.newInstance(),MyFragment12.TAG)
.addToBackStack(null)
.commit();
我已经花费了很多时间搜索有关这个问题的信息。我在这里看到了一些信息:Android multiple fragment transaction ordering,以及https://code.google.com/p/android/issues/detail?id=69403&thanks=69403&ts=1399482444和https://code.google.com/p/android/issues/detail?id=31116。
我的理解是这是在一个Activity的onResume()期间重新添加Fragment时的一个错误。
如何防止我的Activity在恢复时错误地排序我的Fragments?
我的Activity布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame" />