Android Studio空对象引用报错:设置按钮可见性、ImageView监听异常问询
问题根因与解决方法
- 最核心的原因是
onCreate方法中未调用setContentView()关联XML布局,Activity在未加载布局的情况下执行findViewById永远返回null,调用方法时就会抛出空指针异常。 - 第二处问题是代码中查找的控件id与XML中定义的id不匹配:
- 你在XML中给按钮定义的id是
btn_add,但代码中写的是findViewById(R.id.add_product),二者不一致导致查找失败 - ImageView在XML中定义的id是
btn_like,但代码中写的是findViewById(R.id.like),同样存在id不匹配的问题
- 你在XML中给按钮定义的id是
修正后的代码示例
Button btn_add; ImageView like; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 新增此行,将R.layout.your_layout_name替换为你实际的XML布局文件名 setContentView(R.layout.your_layout_name); // 改为XML中实际定义的按钮id btn_add btn_add=findViewById(R.id.btn_add); btn_add.setVisibility(View.INVISIBLE); // 改为XML中实际定义的ImageView id btn_like like = findViewById(R.id.btn_like); like.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(BusinessActivity.this,"liked",Toast.LENGTH_SHORT).show(); } }); }
额外排查点
如果以上修改后仍报错,可检查是否存在多维度适配的同名布局文件(比如横竖屏、不同系统版本、不同分辨率的同名布局),确认所有适配版本的布局中都包含对应id的控件,避免部分场景下查找控件失败。
内容的提问来源于stack exchange,提问作者CastroNcube
相关产品推荐
相关产品推荐

