我的应用程序包含一个活动,其中LinearLayout
是片段的容器。
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:orientation="vertical" >
</LinearLayout>
到目前为止,我在容器中的片段之间切换没有问题。现在我需要添加一个片段的开关,另一个片段具有相同的布局但具有不同的逻辑。
以下是我在片段之间切换的方法:
final MyFragment fragment = new MyFragment();
final Bundle args = new Bundle();
args.putString("key", "value");
fragment .setArguments(args);
FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.abc_fade_in, R.anim.abc_fade_out).replace(R.id.container, fragment );
if(addToBackStack)
{
transaction.addToBackStack(tag).commit();
}
else
{
transaction.commit();
}
当在2个片段之间切换时,我将false作为addToBackStack
传递,因此具有相同布局的调用片段不会被保存到后栈。
交换机本身有效,但是当我按下后退按钮时,我看到操作栏的标题正在更改为上一个标题,而前一个片段的onCreateView
被调用,但是布局本身保持不变,不会改变。那是为什么?