Как устранить исключение Java Null Pointer Exception при использовании панели навигации Android в моем приложении для Android

Я получаю сообщение об ошибке во время выполнения:

FATAL EXCEPTION: main
Process: com.example.home.stobun, PID: 18938
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.home.stobun/com.example.home.stobun.drawer}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339)

когда я пытаюсь реализовать следующий фрагмент кода:

Вот мой класс Java:


package com.example.home.stobun;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.Toast;


public class drawer extends AppCompatActivity implements 
NavigationView.OnNavigationItemSelectedListener{
private DrawerLayout mdrawerlayout;
private ActionBarDrawerToggle mdrawertoggle;

protected void onCreate (Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.drawer);
    mdrawerlayout=(DrawerLayout)findViewById(R.id.drawer);
    mdrawertoggle=new ActionBarDrawerToggle(this,mdrawerlayout,R.string.open,R.string.close);
    mdrawerlayout.addDrawerListener(mdrawertoggle);
    mdrawertoggle.syncState();
    getActionBar().setDisplayHomeAsUpEnabled(true); ***//geting an error cuz of this***
    NavigationView navigationView=(NavigationView)findViewById(R.id.navigation_view);
    navigationView.setNavigationItemSelectedListener(this);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (mdrawertoggle.onOptionsItemSelected(item))
    {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    int id=item.getItemId();

    if (id==R.id.home)
    {
        Toast.makeText(this,"This is home",Toast.LENGTH_SHORT);
    }
    if (id==R.id.notices)
    {
        Toast.makeText(this,"This is Notices",Toast.LENGTH_SHORT);
    }
    if (id==R.id.assignments)
    {
        Toast.makeText(this,"This is assignments",Toast.LENGTH_SHORT);
    }

    return false;
}

}


Вот соответствующий XML

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.v4.widget.DrawerLayout 
xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:theme = "@style/Widget.Design.AppBarLayout"
android:id = "@+id/drawer"
xmlns:app = "http://schemas.android.com/apk/res-auto">
<LinearLayout
    android:layout_width = "match_parent"
    android:layout_height = "match_parent">
</LinearLayout>

<android.support.design.widget.NavigationView
    android:id = "@+id/navigation_view"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    app:menu = "@menu/nav_menu"
    android:layout_gravity = "start">
     </android.support.design.widget.NavigationView>

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

Я выполнил шаги, приведенные в этом видео YouTube, чтобы создать ящик навигации приложения, но кнопка переключения ящика навигации (три строки) не отображается из-за ошибки, которая связана с тем, что вызов панели действий возвращает исключение нулевого указателя .

https://thewikihow.com/video_NC3dM8qcpEM

Приложение вылетает во время работы.

Привет, Абхишек, проверьте мой ответ ниже

Sachin 14.03.2018 21:08

Возможный дубликат getActionBar () возвращает null

Miroslav Ranisavljevic 14.03.2018 22:02
1
2
313
2

Ответы 2

Вы звоните getActionBar() звоните getSupportActionBar()

Вам необходимо использовать getSupportActionBar() вместо getActionBar().

как это -

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Другие вопросы по теме