为什么收到此“ java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'...'”错误?

时间:2018-11-17 12:41:45

标签: android

这是我的Java文件,其中声明了具有正确ID的textView。

     @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        MenuItem item=menu.findItem(R.id.menu_wrong_answer);
        ConstraintLayout constraintLayout=(ConstraintLayout)item.getActionView();
        txt_wrong_answer=(TextView)constraintLayout.findViewById(R.id.txt_wrong_answer);
        txt_wrong_answer.setText(String.valueOf(0));


        return true;
    }

这是我在其中声明具有正确ID的textview的xml文件。

       <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txt_wrong_answer"
        android:text="1"
        android:textSize="20sp"
        android:textStyle="bold"
        android:textColor="@android:color/white"
        android:padding="10dp"
        android:background="@drawable/text_view_bg"/>

</android.support.constraint.ConstraintLayout>

我收到此错误

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference

com.developers.a_g.androidquizapp.QusetionActivity.onPrepareOptionsMenu(QusetionActivity.java:358)

2 个答案:

答案 0 :(得分:2)

是的,您可以使用1方法修改菜单,但首先应在onPrepareOptionsMenu中创建菜单。

onCreateOptionsMenu

编辑:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.your_menu,menu);
    return true;
}

应该是

android:actionLayout="@layout/rectangle_text_view"

答案 1 :(得分:0)

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        MenuItem register = menu.findItem(R.id.menu_share);
        super.onCreateOptionsMenu(menu);
    }

您是否在oncreateOptinsMenu内尝试过txt_wrong_answer=(TextView)constraintLayout.findViewById(R.id.txt_wrong_answer);