Android从支持库中添加drawerLayout
问题描述:
我正在尝试使用android支持库创建一个抽屉导航到姜饼项目我已经成功安装了支持库,并试图将字符串数组传递到抽屉列表中,但是我得到数组中的空指针异常并不确定原因。有谁知道如何在老版本的Android中正确实现抽屉布局?Android从支持库中添加drawerLayout
继承人到目前为止,我做了什么不确定是否正确的方式来做到这一点。
mainpage.java
String[] mPlanetTitles = {
"Abundance",
"Anxiety",
"Bruxism",
"Discipline",
"Drug Addiction"
};
//mPlanetTitles = getResources().getStringArray(R.array.menu_array);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
// Set the adapter for the list view
mDrawerList.setAdapter(new ArrayAdapter<String>(this,
R.layout.drawer_list_item, android.R.id.text1, mPlanetTitles));
}
drawer_list_item
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="18dp"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
错误日志
10-06 11:19:45.869: E/AndroidRuntime(1660): FATAL EXCEPTION: main
10-06 11:19:45.869: E/AndroidRuntime(1660): java.lang.NullPointerException
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:353)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.widget.AbsListView.obtainView(AbsListView.java:1536)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.widget.ListView.makeAndAddView(ListView.java:1793)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.widget.ListView.fillDown(ListView.java:718)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.widget.ListView.fillFromTop(ListView.java:775)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.widget.ListView.layoutChildren(ListView.java:1646)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.widget.AbsListView.onLayout(AbsListView.java:1366)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.view.View.layout(View.java:7175)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:678)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.view.View.layout(View.java:7175)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.view.View.layout(View.java:7175)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.view.View.layout(View.java:7175)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.view.ViewRoot.performTraversals(ViewRoot.java:1146)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.view.ViewRoot.handleMessage(ViewRoot.java:1866)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.os.Handler.dispatchMessage(Handler.java:99)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.os.Looper.loop(Looper.java:123)
10-06 11:19:45.869: E/AndroidRuntime(1660): at android.app.ActivityThread.main(ActivityThread.java:3687)
10-06 11:19:45.869: E/AndroidRuntime(1660): at java.lang.reflect.Method.invokeNative(Native Method)
10-06 11:19:45.869: E/AndroidRuntime(1660): at java.lang.reflect.Method.invoke(Method.java:507)
10-06 11:19:45.869: E/AndroidRuntime(1660): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
10-06 11:19:45.869: E/AndroidRuntime(1660): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
10-06 11:19:45.869: E/AndroidRuntime(1660): at dalvik.system.NativeStart.main(Native Method)
答
在你的java文件NavigationDrawer适配器你引用android.R.id.text1但你的.xml文件中有“@ + id/textView1”因此它会引发空指针异常。
将.xml文件的TextView ID更改为android:id =“@ android:id/text1”它应该开始工作。