在我的程序中,我有一些片段(Fragments),我可以通过点击每个片段并使用此代码替换它。我的问题是:这些片段加载速度较慢,每次点击片段后都会创建一个新的片段,导致再次加载。如何保存片段内容或状态并防止重新加载?
@Override
public void onNavigationDrawerItemSelected(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new InfoFragment();
break;
case 1:
fragment = new ParentOtoFragment();
break;
case 2:
fragment = new ParentProFragment();
break;
case 3:
fragment = new SupportFragment();
break;
case 4:
fragment = new AboutFragment();
break;
}
if (fragment != null){
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container,fragment).commit();
}
}
更新POST请求
在@Vikram Ezhil回复了这个话题之后,我将fragments
和fragmentTAG
放入构造函数中,并将@Vikram Ezhil的代码更改为以下代码,我的问题得到解决。
@Override
public void onNavigationDrawerItemSelected(int position) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
if (getSupportFragmentManager().findFragmentByTag(fragmentTAGS[position]) == null) {
fragmentTransaction.add(R.id.container, fragments[position], fragmentTAGS[position]);
}
for (int i = 0; i < fragments.length; i++) {
if (i == position) {
fragmentTransaction.show(fragments[i]);
} else {
if (getSupportFragmentManager().findFragmentByTag(fragmentTAGS[position]) != null) {
fragmentTransaction.hide(fragments[i]);
}
}
}
fragmentTransaction.commit();
}