我的活动有 2 种不同的纵向和横向 xml 布局。我试图在方向改变时使用相同的片段,在 Activity 的 onCreate() 中使用该代码:
if (savedInstanceState == null) {
frag = Fragment
.instantiate(this, PlayerControlsFragment.class.getName());
} else {
frag = fragmentManager.findFragmentByTag(FRAG_TAG);
}
然后,取决于方向:
private void initLandscapePlayerFragment(FragmentTransaction ft) {
ft.add(R.id.layout_center_top, frag);
}
private void initPortraitPlayerFragment(FragmentTransaction ft) {
ft.add(R.id.layout_left_top, frag);
}
它给了我一个很好的
IllegalStateException:无法更改片段 Frag 的容器 ID
事实上,当我在两个 xml 中使用相同的容器 id 时,它可以工作,但在我的情况下它不是一个解决方案。我尝试了不同的随机解决方案(在破坏活动之前分离等)但没有成功。
知道吗?