我正在尝试在android中实现抽屉,但在设置适配器时会出现空指针异常。
mNavigationDrawerItemTitles = getResources().getStringArray(R.array.navigation_drawer_items_array);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.drawer_list);
ObjectDrawerItem[] drawerItem = new ObjectDrawerItem[3];
drawerItem[0] = new ObjectDrawerItem(R.drawable.logout);
drawerItem[1] = new ObjectDrawerItem(R.drawable.ic_launcher);
drawerItem[2] = new ObjectDrawerItem(R.drawable.ic_launcher);
// Pass the folderData to our ListView adapter
//DrawerItemCustomAdapter adapter = new DrawerItemCustomAdapter(this, R.layout.listview_row_item, drawerItem);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(),
R.layout.listview_row_item, mNavigationDrawerItemTitles);
// Set the adapter for the list view
mDrawerList.setAdapter(adapter);
mTitle = mDrawerTitle = getTitle();
public class ObjectDrawerItem {
public int icon;
public String name;
// Constructor.
public ObjectDrawerItem(int icon) {
this.icon = icon;
}
}
我的资源中有一个名为navigation_drawer_items_array
的数组列表01-14 07:54:25.081: E/AndroidRuntime(2252): FATAL EXCEPTION: main
01-14 07:54:25.081: E/AndroidRuntime(2252): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yolove/com.yolove.main.HomeActivity}: java.lang.NullPointerException
01-14 07:54:25.081: E/AndroidRuntime(2252): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
01-14 07:54:25.081: E/AndroidRuntime(2252): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
01-14 07:54:25.081: E/AndroidRuntime(2252): at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-14 07:54:25.081: E/AndroidRuntime(2252): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
01-14 07:54:25.081: E/AndroidRuntime(2252): at android.os.Handler.dispatchMessage(Handler.java:99)
01-14 07:54:25.081: E/AndroidRuntime(2252): at android.os.Looper.loop(Looper.java:137)
01-14 07:54:25.081: E/AndroidRuntime(2252): at android.app.ActivityThread.main(ActivityThread.java:5103)
01-14 07:54:25.081: E/AndroidRuntime(2252): at java.lang.reflect.Method.invokeNative(Native Method)
01-14 07:54:25.081: E/AndroidRuntime(2252): at java.lang.reflect.Method.invoke(Method.java:525)
01-14 07:54:25.081: E/AndroidRuntime(2252): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-14 07:54:25.081: E/AndroidRuntime(2252): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-14 07:54:25.081: E/AndroidRuntime(2252): at dalvik.system.NativeStart.main(Native Method)
01-14 07:54:25.081: E/AndroidRuntime(2252): Caused by: java.lang.NullPointerException
01-14 07:54:25.081: E/AndroidRuntime(2252): at com.yolove.main.HomeActivity.onCreate(HomeActivity.java:182)
01-14 07:54:25.081: E/AndroidRuntime(2252): at android.app.Activity.performCreate(Activity.java:5133)
01-14 07:54:25.081: E/AndroidRuntime(2252): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
01-14 07:54:25.081: E/AndroidRuntime(2252): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
01-14 07:54:25.081: E/AndroidRuntime(2252): ... 11 more
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:padding="10dp" >
<ImageView
android:id="@+id/imageViewIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:paddingRight="10dp" />
<TextView
android:id="@+id/textViewName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/imageViewIcon"
android:paddingRight="10dp"
android:text="Folder name here."
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="#ffffff" />
</RelativeLayout>
<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" >
<!-- The main content view -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- The navigation drawer -->
<ListView
android:id="@+id/drawer_list"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#111"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>
答案 0 :(得分:0)
您的ListView
似乎为空。您的onCreate
方法是否已正确初始化?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
}
答案 1 :(得分:0)
您误导了ListView
- 现有代码:
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.drawer_list);
将尝试获取&#34; drawer_list&#34;您的Activity
布局中的元素,而不是您的&#34; drawer_layout&#34;。您需要在&#34; drawer_layout&#34;上findViewById
mDrawerList = (ListView) mDrawerLayout.findViewById(R.id.drawer_list);
像这样:
{{1}}
你不清楚你的&#34; DrawerLayout&#34;正确 - 你需要给它充气或正确引用它。