带有导航抽屉的Fragment中的ListView -Drawer不会拉出列表视图

时间:2014-02-23 08:49:19

标签: listview android-listview android-fragments navigation

我正在尝试按照https://developer.android.com/training/implementing-navigation/nav-drawer.html的说明制作导航抽屉,我已准备好抽屉我可以插入只有文本视图的测试片段。

接下来,我想要一个包含从db填充的listView的片段。我可以让listview显示但是导航抽屉会在这个列表视图上拉出来。

我之前阅读过帖子:Using a ListFragment with Navigation Drawer我将ListFragment转换为片段并使用listview而不是ListFragment。

但我仍然无法将导航抽屉拉过来..

公共类WelcomeScreen扩展了Fragment {

private static final String KEY_SUBJ = "Subjects";
private DBHelper myDBCopier;
Context mycontext;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        return inflater.inflate(R.layout.welcome, container, false);
}

public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    mycontext = getActivity().getApplicationContext();

    //code copies the db 
    myDBCopier = new DBHelper(mycontext);
        try {

            myDBCopier.createDataBase();
        } catch (IOException e) {
            System.out.println("PROBLEM");
        }finally{
            System.out.println("SUCCESS");
        }
        myDBCopier.open();

        // this code gets the list

        String[] ListOfSubjects = new String[myDBCopier.rowcountsubj()];

        Cursor MyC = myDBCopier.getSubj();
        int i = 0;
        while(MyC.moveToNext()){
            String uname = MyC.getString(MyC.getColumnIndex(KEY_SUBJ));
            ListOfSubjects[i] = uname;
            System.out.println(uname);
            i++;
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                getActivity(),
                android.R.layout.simple_list_item_1,
                ListOfSubjects
                );

        // referencing the listview
            ListView myList = (ListView)getActivity().findViewById(R.id.list_view);
            myList.setAdapter(adapter);
            } 

这是我的xml文件

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</LinearLayout>

在我弄清楚我的错误(使问题和解决方案可用)后,我正在编辑问题

以下是我的活动类的一部分,我在其中显示了片段

.......
 FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = 
            fragmentManager.beginTransaction();
            Fragment frag0 = new WelcomeScreen();
            fragmentTransaction.replace(android.R.id.content, frag0);
            fragmentTransaction.commit();
........

这是我的main.xml

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Framelayout to display Fragments -->
    <FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- Listview to display slider menu -->
    <ListView
        android:id="@+id/list_slidermenu"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@color/list_divider"
        android:dividerHeight="1dp"       
        android:listSelector="@drawable/list_selector"
        android:background="@color/list_background"/>
</android.support.v4.widget.DrawerLayout>

1 个答案:

答案 0 :(得分:0)

在我的main.xml中,我有:..我想要显示的新片段的放置位置

所以我的代码应该是

fragmentTransaction.replace(R.id.frame_container, frag0);(专门将我的片段放在容器中。

而不是

 fragmentTransaction.replace(android.R.id.content, frag0); 

Ans这就是我无法看到覆盖的ListView(导航抽屉)的原因,因为我的新片段取代了整个视图。