如何修复导致崩溃的 setOnClickListener 代码

How to fix setOnClickListener code that causes crash

我很难弄清楚我的代码有什么问题,我的代码在尚未实现 onclick 侦听器时运行,但是一旦我实现了 onclick 侦听器它就会崩溃。

 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;






        }


    }
//}

当我尝试调试代码时,这些行是崩溃的原因。

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

这是问题开始的地方,因为即使 onclick 为空白,代码也能正常工作。当我检查日志时,它显示了这个错误

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

您没有显示足够的代码,但这可能是由于以下几个原因:

这行代码 breathing = (CardView) findViewById(R.id.breathing); 将在您的 activity 布局中查找 ID 为 breathing 的视图,根据错误,它为 null,这意味着它找到了在同一 activity 的布局中找不到它,因此请确保您的 cardView 在此 activity 的布局中。另一个可能的原因是您的 xml 文件中可能有重复的 ID,在这种情况下,找到重复项并重命名 ID。