如何修复导致崩溃的 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。
我很难弄清楚我的代码有什么问题,我的代码在尚未实现 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。