amol junghare
amol junghare

Reputation: 73

Why am I getting this "java.lang.NullPointerException: Attempt to invoke virtual method '…' on a null object reference" error?

This is my java file in which I declare textView with proper id.

     @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;
    }

This is the xml file in which I declare textview with proper id.

       <?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>

I get this error

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

at

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

Upvotes: 0

Views: 511

Answers (2)

navylover
navylover

Reputation: 13539

Yes, you could modify menu in onPrepareOptionsMenu method, but you should create it firstly in onCreateOptionsMenu.

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

Edited:

android:actionLayout="@layout/rectangle_text_view"

should be

app:actionLayout="@layout/rectangle_text_view"

Upvotes: 2

Kevin Kurien
Kevin Kurien

Reputation: 842

 @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);
    }

have you tried txt_wrong_answer=(TextView)constraintLayout.findViewById(R.id.txt_wrong_answer); inside oncreateOptinsMenu

Upvotes: 0

Related Questions