Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通过NavigationDrawer更改保留片段_Android_Listview_Android Fragments_Navigation Drawer - Fatal编程技术网

Android 通过NavigationDrawer更改保留片段

Android 通过NavigationDrawer更改保留片段,android,listview,android-fragments,navigation-drawer,Android,Listview,Android Fragments,Navigation Drawer,我已经设置了导航抽屉,就像android开发者中的一样。 在导航抽屉里,我现在有两块碎片。其中一个片段包含listview,其内容通过AsyncTask填充,AsyncTask通过相当耗时的文件系统搜索加载项。我已经通过配置更改实现了保留列表项的功能: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(savedInstanceSta

我已经设置了导航抽屉,就像android开发者中的一样。 在导航抽屉里,我现在有两块碎片。其中一个片段包含listview,其内容通过AsyncTask填充,AsyncTask通过相当耗时的文件系统搜索加载项。我已经通过配置更改实现了保留列表项的功能:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(savedInstanceState == null) {
        new LoadPdfList().execute(Environment.getExternalStorageDirectory());
    } else {
        pdfThumbs = savedInstanceState.getParcelableArrayList("pdfThumbs");
    }
}
但还有一个大问题,我无法解决。当我用导航抽屉切换当前片段并切换回承载listview的上一个片段时,asynctask就会重新执行。 尽管考虑到android开发者教程中的这部分displayView代码,这种行为对我来说并不奇怪:

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");
    }
}
我试着在transactionmanager中处理不同的可能性,但仍然无法让它运行。
我只想在通过导航抽屉更改我的片段时保留我的片段。

它以什么方式不运行?你有错误吗?如果是这样,请发布错误信息。我没有收到错误。但是我的DocumentsFragment被完全重新加载,savedInstanceState包为null。我可以这么说,因为Asynctask会再次执行,这只发生在onCreate方法的if语句中。因此,我的代码正在运行,但每次输入片段时都会重新加载列表项。