Search code examples
android-studioonclicklistenerandroid-cardview

How to fix setOnClickListener code that causes crash


I am having difficulty in figuring out what is wrong with my code, My code runs when the onclick listener is not yet implemented but once I implement the onclick listener it crashes.

 public class menu extends AppCompatActivity implements View.OnClickListener {


    private CardView assess, profile, chatbot, breathing;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);

        assess = (CardView) findViewById(R.id.assess);
        profile = (CardView) findViewById(R.id.profile);
        chatbot = (CardView) findViewById(R.id.chatbot);
        breathing = (CardView) findViewById(R.id.breathing);

//        assess.setOnClickListener(this);
//        profile.setOnClickListener(this);
//        chatbot.setOnClickListener(this);
//        breathing.setOnClickListener(this);






        }
        
    @Override
    public void onClick(View v) {

//        Intent i;
//
//        switch (v.getId()){
//
//
//            case R.id.assess :
//                i = new Intent(this,depression_assessment.class);
//                startActivity(i);
//                break;






        }


    }
//}

When I tried debugging the codes, these lines are the cause of the crash.

//        assess.setOnClickListener(this);
//        profile.setOnClickListener(this);
//        chatbot.setOnClickListener(this);
//        breathing.setOnClickListener(this);

It is where the problem is starting because the code works even though the onclick is blank. When I checked the logs it shows this error

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.thesis/com.example.thesis.menu}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.cardview.widget.CardView.setOnClickListener(android.view.View$OnClickListener)' on a null object reference


Solution

  • You haven't shown enough code, but this could be due to serveral reasons:

    This line of code breathing = (CardView) findViewById(R.id.breathing); will look for a view with id breathing inside your activity's layout, and according to the error it is null, which means it did not find it within the same activity's layout, so make sure your cardView is in this activity's layout. Another possible reason is that you might have duplicate Ids in your xml files, in this case,find the duplicate and rename the Ids.