Android碎片分离
我有两个片段的活动。一个片段以纵向显示,另一个以横向模式显示。片段用java添加。Android碎片分离
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被称为太显示景观片段的画面。这意味着肖像片段仍然存在。你能告诉我我的错误在哪里吗?
Keep it simple
:: Replacing Fragment
= Removing Current Fragment
+ Adding New Fragment
Sample
:: 修改与saveInstance
您的需求和其他的东西
Boolean mFlag=false;
{
Fragment fragment = null;
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
if(mFlag==false)
FragmentPortrait();
mFlag=true;
} else {
if(mFlag==true)
FragmentLandscape();
mFlag=false;
}
FragmentPortrait(){
// Perform Action:: Replacing a fragment with the fragment you want to add in Portrait
}
FragmentLandscape(){
// Perform Action:: Replacing a fragment with the fragment you want to add in Landscape
}
}
我没有之前的分离方法,但注意到这个问题,并尝试使用它,但它仍然无法正常工作..我会修复我的代码,但是当我改变(例如)从纵向到横向时,你能告诉我为什么该肖像的onActivityCreated也被称为? – definera 2014-10-06 13:23:28
@ Crash-ID ....'onActivityCreated'将被调用,因为片段被破坏并创建! .......但我不知道为什么'OnOrientation'从肖像变为风景,为什么人物的onActivityCreated也被称为........如果你想通过限制使用'flags' ...因为全局变量不会在'OnOrientation'类中被破坏! ......检查编辑! ....希望它可以帮助...'注意''修改标志设置以满足您的需求! – Devrath 2014-10-06 13:47:47
您不需要手动分离片段。试着替换它们。 – eleven 2014-10-06 12:44:01