java - Android - 抽屉布局 - 关闭抽屉导致空指针异常

标签 java android drawerlayout

我无法在 Android 中关闭抽屉布局。每次调用 drawer.closeDrawers() 或 drawer.closeDrawers(list) 时,我都会遇到空指针异常。

这是我的 MainActivity.java 代码。

// Sliding drawer menu
private DrawerLayout drawer;
// Drawer list
private ListView drawerList;
...
...
...
// List of menu options
final String[] menu = new String[]{
        "Item 1",
        "Item 2",
        "Item 3",
        "Item 4",
        "Item 5"
};
// Initialize the drawer menu layout
drawer = (DrawerLayout) findViewById(R.layout.activity_main);
// Initialize the drawer list
drawerList = (ListView) findViewById(R.id.list_slidermenu);
// Drawer list adapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, menu);
// Set the adapter for the list
drawerList.setAdapter(adapter);
// Set the background selector for each menu item
drawerList.setSelector(android.R.color.holo_blue_dark);
// On click listener for the list
drawerList.setOnItemClickListener(new OnItemClickListener() {
    // When a menu item is clicked
    public void onItemClick(AdapterView<?> e, View v, int position, long id) {
        // Close the drawer
        drawer.closeDrawers(); // Causes a Null Pointer Exception
    }
});

这是我的 activity_main.xml 代码。

<!-- Left sided swipe in Drawer layout -->
<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" >

    <!-- Google maps fragment -->
    <fragment
        android:id="@+id/google_map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </fragment>
</FrameLayout>

<!-- 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="@android:color/transparent"
    android:dividerHeight="0dp"
    android:background="#F0F0F0"/>

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

这是我的错误堆栈跟踪。

10-30 20:29:21.956: E/AndroidRuntime(1959): FATAL EXCEPTION: main
10-30 20:29:21.956: E/AndroidRuntime(1959): Process: com.dziz.umbcparkingpal, PID: 1959
10-30 20:29:21.956: E/AndroidRuntime(1959): java.lang.NullPointerException
10-30 20:29:21.956: E/AndroidRuntime(1959):     at com.dziz.umbcparkingpal.MainActivity$1.onItemClick(MainActivity.java:108)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at android.widget.AdapterView.performItemClick(AdapterView.java:301)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at android.widget.AbsListView.performItemClick(AbsListView.java:1113)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2911)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at android.widget.AbsListView$3.run(AbsListView.java:3645)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at android.os.Handler.handleCallback(Handler.java:733)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at android.os.Handler.dispatchMessage(Handler.java:95)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at android.os.Looper.loop(Looper.java:136)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at android.app.ActivityThread.main(ActivityThread.java:5097)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at java.lang.reflect.Method.invokeNative(Native Method)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at java.lang.reflect.Method.invoke(Method.java:515)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
10-30 20:29:21.956: E/AndroidRuntime(1959):     at dalvik.system.NativeStart.main(Native Method)

谁能告诉我我在做什么导致了这个空指针异常?

最佳答案

设置你的抽屉,

drawer= (DrawerLayout) findViewById(R.id.DrawerLayout);

关于java - Android - 抽屉布局 - 关闭抽屉导致空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26665553/

相关文章:

java - 如何在不调用execSQL的情况下删除SQLite表IF EXISTS?

android - MediaPlayer 的 prepareAsync 似乎在 Android 9 上停止工作

android - 在 DrawerLayout 中滚动时标题后面的项目列表

android - 如何将填充(或边距)设置为 android.support.v4.widget.DrawerLayout,但是

java - 包含 zip 文件的 base64 字符串的解码在结果字符串中得到 8 个字符代码错误

java - 将类更改为泛型类型

java - AnyLogic基于代理的建模: ClassCastException

android - adb -d shell "run-as ..."不适用于 Android O

android - 如何在 Android 中制作全屏 DrawerLayout?

java - 为 Eclipse Helios 安装 Google 插件