我收到一个运行时错误:
致命异常: main
进程: com.example.home.stobun,PID: 18938
java.lang.RuntimeException:无法启动activity ComponentInfo{com.example.home.stobun/com.example.home.stobun.drawer}:空:尝试对空对象引用调用虚方法的android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)‘java.lang.NullPointerException
在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://www.youtube.com/watch?v=NC3dM8qcpEM
应用程序在运行时崩溃。
发布于 2018-03-15 04:05:03
您正在调用getActionBar()
call getSupportActionBar()
发布于 2018-03-15 04:05:49
您需要使用getSupportActionBar()
来代替getActionBar()
。
就像这样-
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
https://stackoverflow.com/questions/49286704
复制相似问题