【问题标题】:How to fix setOnClickListener code that causes crash如何修复导致崩溃的 setOnClickListener 代码
【发布时间】:2021-04-04 16:43:39
【问题描述】:

我很难弄清楚我的代码出了什么问题,我的代码在 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:无法启动活动 组件信息{com.example.thesis/com.example.thesis.menu}: java.lang.NullPointerException:尝试调用虚拟方法'void androidx.cardview.widget.CardView.setOnClickListener(android.view.View$OnClickListener)' 在空对象引用上

【问题讨论】:

    标签: android-studio onclicklistener android-cardview


    【解决方案1】:

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

    这行代码breathing = (CardView) findViewById(R.id.breathing);会在你的activity的布局中寻找一个id为breathing的视图,根据错误它是null,这意味着它没有在同一个activity的布局中找到它,所以确保您的 cardView 在此活动的布局中。另一个可能的原因是您的 xml 文件中可能有重复的 Id,在这种情况下,找到重复的 Id 并重命名。

    【讨论】:

    • 嗨!谢谢回复,原来我有2个菜单xml文件,一个是普通的xml,另一个是v21。我使用的是普通的 xml 文件,但代码使用的布局是 v21 的。现在一切都好。
    • 很高兴知道它现在已修复!
    猜你喜欢
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多