尝试调用虚拟方法'android.view.Menu

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

我在Logcat中有此错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Menu
com.google.android.material.navigation.NavigationView.getMenu()' on a null object reference
    at com.store.Credenciales.Login.addMenuItemLogOut(Login.java:93)

我在Login.java:93中的代码是此功能:

private void addMenuItemLogOut(){
    NavigationView navigationView= (NavigationView) findViewById(nav_view);
    Menu menu = navigationView.getMenu(); //Line 93
    menu.findItem(R.id.nav_signin).setVisible(false);
    menu.findItem(R.id.nav_send).setVisible(true);
}

并且当用户输入正确的用户名和密码时,将功能提高的命令

if(isLogin){
    addMenuItemLogOut(); //Here
    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
    Bundle bundle =  new Bundle();
    bundle.putString("user_id", userd);
    intent.putExtras(bundle);
    startActivity(intent);
}
java android android-studio nullpointerexception android-navigationview
1个回答
0
投票

您应该使用getHeaderView (int index)

在指定位置获取标题视图。

 NavigationView navigationView       = findViewById(R.id.nav_view);
 View header         = navigationView.getHeaderView(0);
 navigationView.getMenu().findItem(R.id.nav_signin).setVisible(false);
 navigationView.getMenu().findItem(R.id.nav_send).setVisible(true);
© www.soinside.com 2019 - 2024. All rights reserved.