【发布时间】:2015-06-06 00:51:33
【问题描述】:
在我的片段转换的自定义动画期间屏幕方向发生变化时,我遇到片段排序问题。
如果我在正确的时间旋转屏幕,片段会在MyFragment1 应该在的位置添加MyFragment2。
我正在添加我的片段如下:
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
我的理解是,这是一个在活动的 onResume() 期间重新添加片段的错误。
如何防止我的 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" />
【问题讨论】:
-
如何在xml中按你想要的顺序添加片段
-
您的意思是将它们预先添加到主布局中吗?目前我的活动不包含任何布局信息。我正在以编程方式交换片段,并且布局在它们自己的布局文件中单独描述。该问题仅在方向更改期间发生。
-
是的,在活动中使用
标签来订购您的片段 -
好的,我会试一试。泰。