通过NavigationDrawer更改保留片段

时间:2014-04-01 11:36:33

标签: android listview android-fragments navigation-drawer

我的导航抽屉设置就像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开发人员教程中的di​​splayView-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");
    }
}

我试图搞乱交易经理的不同可能性,但仍然无法让它运行。 我只是希望在通过导航抽屉改变我的碎片时保留我的碎片。

0 个答案:

没有答案