【发布时间】:2014-08-24 19:24:04
【问题描述】:
我为我的应用制作了一个非常简单的基于片段的标签控制器。
Fragment f = null;
switch(index) {
case 0:
f = new AFragment();
break;
case 1:
f = new BFragment();
break;
case 2:
f = new CFragment();
break;
}
if(f!=null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.pnlTabContent, f);
ft.commit();
}
这些片段由 ActionBar-tabs 控制:
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar.newTab().setText("A").setIcon(R.drawable.tab_a).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("B").setIcon(R.drawable.tab_b).setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("C").setIcon(R.drawable.tab_c).setTabListener(this));
这很好用,我唯一的问题是我为每个选项卡更改创建新片段。这听起来效率低下。所以我的第一个想法是在主activity中简单地创建一个数组(Fragment[] tabs)来将片段保存在内存中,然后将第一个代码块中的开关替换为Fragment f = tabs[index];。
但是我找不到任何文章提到这个问题,这让我相信每次都实例化新片段确实是常见的做法。那正确吗?有没有办法“缓冲”碎片?
【问题讨论】:
标签: android optimization android-fragments tabs