屏幕方向更改后错误替换了片段视图

时间:2012-10-19 12:29:01

标签: android fragment screen-orientation fragmenttransaction

App具有与maplayout容器匹配父级的片段活动。 用户与片段ui进行交互,他们互相替换,将旧的放在后台,例如: A - > B - > C - > D - > E - > ˚F

当用户更改手机方向时,例如,在片段D上,并且想要转到片段E,片段A的视图显示,如果用户按下此片段A(通常转到片段B)中的某些内容,则视图片段F显示。

如何在屏幕方向改变后显示片段E而不是A?

应用程序使用最新的Android支持库,这发生在Android 4.1模拟器和Android 2.3手机(未测试其他Android版本)。

所有片段都有下一个片段方法:

public final void showNextFragment(final Fragment frg, final String tag) {
    final FragmentTransaction tr = getFragmentManager().beginTransaction();
    tr.remove(this);
    tr.add(R.id.fragment_container, frg, tag);
    tr.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    tr.addToBackStack(tag);
    tr.commit();
}

修改

当在片段D上旋转屏幕时,所有旋转都正常进行并显示片段D的视图。如果用户使用上述方法进入片段E,旋转后的问题,片段A的视图显示而不是E.如果用户旋转手机片段E正常显示。

1 个答案:

答案 0 :(得分:-1)

一种解决方案是将当前标记或片段保持为静态变量。

否则,你想在屏幕方向上回到A吗?如果不是,您应该在清单中添加:

<activity android:configChanges="keyboardHidden|orientation" ...