我正在尝试按照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>
答案 0 :(得分:0)
在我的main.xml中,我有:..我想要显示的新片段的放置位置
所以我的代码应该是
fragmentTransaction.replace(R.id.frame_container, frag0);
(专门将我的片段放在容器中。
而不是
fragmentTransaction.replace(android.R.id.content, frag0);
Ans这就是我无法看到覆盖的ListView(导航抽屉)的原因,因为我的新片段取代了整个视图。