我的导航抽屉设置就像Android开发者training中的导航抽屉一样。 在导航抽屉里面,我现在有两个碎片。其中一个片段包含一个列表视图,其内容通过AsyncTask填充,AsyncTask通过相当耗时的文件系统搜索加载项目。我已经通过配置更改来保留我的列表项目:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null) {
new LoadPdfList().execute(Environment.getExternalStorageDirectory());
} else {
pdfThumbs = savedInstanceState.getParcelableArrayList("pdfThumbs");
}
}
但仍有一个大问题,我无法解决。只要我使用导航抽屉切换当前的Fragment并切换回托管listview的前一个片段,就会重新执行asynctask。 虽然考虑到Android开发人员教程中的displayView-Code的这一部分,这种行为对我来说并不奇怪:
private void displayView(int position) {
// update the main content by replacing fragments
Fragment newFragment = null;
switch (position) {
case 0:
newFragment = new DocumentsFragment();
break;
case 1:
newFragment = new PlayerFragment();
break;
default:
break;
}
if (newFragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.frame_container, newFragment).commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
currentFragmentId = position;
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
我试图搞乱交易经理的不同可能性,但仍然无法让它运行。 我只是希望在通过导航抽屉改变我的碎片时保留我的碎片。