【发布时间】:2014-10-06 12:28:07
【问题描述】:
我有一个包含两个片段的活动。一个片段以纵向显示,另一个以横向模式显示。片段是用 java 添加的。
Fragment fragment = null;
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
fragment = new FragmentPortrait();
} else {
fragment = new FragmentLandscape();
}
if (fragment != null) {
addFragment(fragment, savedInstanceState == null);
}
private void addFragment(Fragment fragment, boolean add) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
detachFragment("fragment");
if (add) {
fragmentTransaction.add(R.id.layoutForFragment, fragment,
"fragment");
} else {
fragmentTransaction.replace(R.id.layoutForFragment,
fragment, "fragment");
}
fragmentTransaction.commit();
}
private void detachFragment(String fragmentTag) {
Fragment fragment = getSupportFragmentManager().findFragmentByTag(
fragmentTag);
if (fragment != null) {
Log.i(TAG, "detaching");
getSupportFragmentManager().beginTransaction().remove(fragment)
.commit();
}
}
我的问题是,如果我在纵向模式下开始我的活动,并且当我旋转屏幕时,横向片段会按预期显示,但纵向片段中的 onActivityCreated 也会被调用。这意味着肖像片段仍然存在。你能告诉我我的错误在哪里吗?
【问题讨论】:
-
您不需要手动分离碎片。尝试替换它们。
标签: android android-fragments android-fragmentactivity detach