在导航抽屉中切换片段时,Android ListView项目消失

时间:2015-06-12 18:13:31

标签: android listview android-fragments navigation-drawer swiperefreshlayout

使用导航抽屉并在其中显示ListView时出现问题。当用户单击导航抽屉中的项目时,它会在片段之间切换以显示所请求的片段。在一个片段中,我有一个ListView,我注意到当我切换到另一个片段并返回到包含ListView的片段时,所有的项目都消失了。我也注意到,SwipeRefreshLayout停止工作。我该如何解决这个问题?

我正在使用的导航抽屉:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include android:id="@+id/toolbar" layout="@layout/toolbar" />

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <FrameLayout
            android:id="@+id/frame_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <ListView
            android:id="@+id/lv_drawer_menu"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:choiceMode="singleChoice"
            android:background="#fff"
            android:divider="@null"
            android:dividerHeight="0dp"
            android:drawSelectorOnTop="true"/>

    </android.support.v4.widget.DrawerLayout>

</LinearLayout>

我正在使用此代码在片段之间切换:

private void setFragment(int position, Class<? extends Fragment> fragmentClass) {
        invalidateOptionsMenu();
        try {
            Fragment fragment = fragmentClass.newInstance();
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.frame_container, fragment, fragmentClass.getSimpleName());
            fragmentTransaction.commit();

            toolbar.setTitle(fragmentTitles[position]);
            drawerMenu.setItemChecked(position, true);
            drawerLayout.closeDrawer(drawerMenu);
            drawerMenu.invalidateViews();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

0 个答案:

没有答案