2011-12-15 77 views
0

我不明白碎片和屏幕方向应该如何在android中工作。碎片和屏幕方向变化

我有一个在XML中定义的片段。

该片段创建成本很高,所以我想重新使用它。

我的代码看起来像这样:

@Override 
protected void onSaveInstanceState (Bundle outState) { 
    super.onSaveInstanceState(outState); 
    getSupportFragmentManager().putFragment(outState, "myfrag", mFrag); 
} 

@Override 
protected void onRestoreInstanceState (Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    mFrag = getSupportFragmentManager().getFragment(savedInstanceState, "myfrag"); 
} 

什么我不明白是怎么取代在XML片段与我已经重新片段-obtained。当我进行屏幕方向更改时,它会摧毁我的活动并重新创建它,但如果我可以保存我的片段并重新使用它,它应该使方向变化快得多。

tia。

回答

1

您可以在xml中创建一个framelayout,并在代码中创建一个片段。然后将创建的片段添加到您的framelayout。在方向更改中,您尝试使用标记或ID查找您创建的片段,并执行一些删除/添加操作。

fragmentmanager.findFragmentByTag(" ... "); 
fragmentmanager.add(R.id.fragmentContainer, myFragment, "..."); 

就是这样的。

http://developer.android.com/guide/topics/fundamentals/fragments.html 查看子节“或者,通过编程将片段添加到现有的ViewGroup”。这是“向活动添加片段”部分的子部分。

亲切的问候, 布拉姆