应用程序具有framelayout容器与父级匹配的片段活动。
用户与fragmentui交互,并相互替换,将old放在backback中,例如:
A->B->C->D->E->F
例如,当用户更改片段d上的电话方向并希望转到片段e时,将显示片段a的视图,如果用户在该片段a中按下某个内容(通常转到片段b),将显示片段f的视图。
屏幕方向改变后如何显示片段E而不是A?
应用程序使用最新的android支持库,这发生在android 4.1模拟器和android 2.3手机(未测试其他android版本)。
所有片段都有这个go-next片段方法:
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,则显示正常。
最佳答案
一种解决方案是将当前标记或片段保留为静态变量。
否则,您想回到屏幕上的方向吗?如果不是,则应将此添加到清单中:
<activity android:configChanges="keyboardHidden|orientation" ...