使用导航抽屉运行项目时出错

问题描述 投票:0回答:1

我尝试在项目中运行导航抽屉,但出现错误。 我是一名学生,在我正在进行的项目中遇到了这个问题。 因为我英语不好,所以我必须使用谷歌翻译来写作。希望你们明白我想说的。非常感谢。

错误如下:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ce160343.exe_4/com.ce160343.exe_4.TestActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
                                                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464)
                                                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524)
                                                                                                        at android.app.ActivityThread.access$900(ActivityThread.java:154)
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                                        at android.os.Looper.loop(Looper.java:234)
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:5526)
                                                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                                                    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
                                                                                                        at com.ce160343.exe_4.TestActivity.onCreate(TestActivity.java:28)
                                                                                                        at android.app.Activity.performCreate(Activity.java:6285)
                                                                                                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
                                                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
                                                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524) 
                                                                                                        at android.app.ActivityThread.access$900(ActivityThread.java:154) 
                                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391) 
                                                                                                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                                        at android.os.Looper.loop(Looper.java:234) 
                                                                                                        at android.app.ActivityThread.main(ActivityThread.java:5526) 
                                                                                                        at java.lang.reflect.Method.invoke(Native Method) 
                                                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

测试活动:

package com.ce160343.exe_4;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;

import android.os.Bundle;
import android.view.MenuItem;

public class TestActivity extends AppCompatActivity {
    public DrawerLayout drawerLayout;
    public ActionBarDrawerToggle actionBarDrawerToggle;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        drawerLayout = findViewById(R.id.my_drawer_layout);
        actionBarDrawerToggle = new ActionBarDrawerToggle(TestActivity.this, drawerLayout, R.string.nav_open, R.string.nav_close);

        drawerLayout.addDrawerListener(actionBarDrawerToggle);
        actionBarDrawerToggle.syncState();

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

activity_test.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/my_drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".TestActivity"
    tools:ignore="HardcodedText">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="128dp"
            android:gravity="center"
            android:text="Name"
            android:textSize="18sp" />
    </LinearLayout>

    <com.google.android.material.navigation.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/navigation_menu" />

</androidx.drawerlayout.widget.DrawerLayout>

导航菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:ignore="HardcodedText">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_kp"
            android:title="@string/nav_kp"
            android:icon="@drawable/ic_kp"
            />

        <item
            android:id="@+id/nav_dvm"
            android:title="@string/nav_dvm"
            android:icon="@drawable/ic_dvm"
            />

        <item
            android:id="@+id/nav_gmnb"
            android:title="@string/nav_gmnb"
            android:icon="@drawable/ic_gmnb"/>

        <item
            android:id="@+id/nav_dsyt"
            android:title="@string/nav_dsyt"
            android:icon="@drawable/ic_dsyt"/>

        <item
            android:id="@+id/nav_dv"
            android:title="@string/nav_dv"
            android:icon="@drawable/ic_dv"/>

        <item
            android:id="@+id/nav_eykh"
            android:title="@string/nav_eykh"
            android:icon="@drawable/ic_eykh"/>

        <item
            android:id="@+id/nav_cstc"
            android:title="@string/nav_cstc"
            android:icon="@drawable/ic_cstc"/>

        <item
            android:id="@+id/nav_hd"
            android:title="@string/nav_hd"
            android:icon="@drawable/ic_hd"/>

        <item
            android:id="@+id/nav_tg"
            android:title="@string/nav_tg"
            android:icon="@drawable/ic_tg"/>
    </group>


</menu>
java android android-studio navigation-drawer
1个回答
0
投票

检查 setDisplayHomeAsUpEnabled 是否返回 null obj

© www.soinside.com 2019 - 2024. All rights reserved.