我使用FragmentTabHost有两个片段的Tabbed布局。在选项卡选择中,每个片段都会重新创建(onCreateView,onActivityCreated ...再次调用)。我在第一个片段(在onCreateView中)加载数据移动到其他选项卡,当我回到第一个片段时,重新创建整个片段,因此再次加载数据。我不想在标签切换上反复加载数据。我该怎么办?
我尝试附加和分离片段而不是添加/替换,但所有片段生命周期方法仍然在标签切换上一次又一次地调用。实现理想行为的正确方法是什么?
答案 0 :(得分:1)
你应该隐藏并展示你的碎片。否则,如果添加/替换,则会调用onCreateView。因此,如果片段已经存在,请使用show and hide。
在你的onTabChanged中,请添加以下代码。
if (mLastTab != newTab) {
FragmentTransaction ft = this.getSupportFragmentManager()
.beginTransaction();
if (mLastTab != null) {
if (mLastTab.fragment != null) {
ft.hide(mLastTab.fragment);
}
}
if (newTab != null) {
if (newTab.fragment == null) {
newTab.fragment = Fragment.instantiate(this,
newTab.clss.getName(), newTab.args);
ft.add(android.R.id.tabcontent, newTab.fragment, newTab.tag);
} else {
ft.show(newTab.fragment);
}
}