菜鸟请教问题

qq_40252810 2019-03-14 06:39:55
我写了一段很简单的代码,就是获取按钮控件,谁知道控件对象居然为空,
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button adddata = (Button)findViewById(R.id.add_data);
if(adddata == null)
{
Log.d("aaaa","aaaaa");
}
else
{
adddata.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
Log.d("iiiii","iiiii");
// TODO Auto-generated method stub
}
});
}
运行一下,直接打印了"aaaa","aaaaa",如果不加if(adddata == null)这个判断,直接adddata.setOnClickListener,程序运行的时候直接就崩溃了,显示NULLpointer啥的,为啥啊?我以前一直是这样用的啊?求大牛解释,谢谢,
add_data 这个button确实在activity_main.xml里,
<Button
android:name = "@+id/add_data"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginLeft="65dp"
android:text="add_data"
/>
我以前一直是这样用的啊,为啥这次用findViewById获取到的控件对象就为空啊?
...全文
400 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2019-03-14
  • 打赏
  • 举报
回复
findViewById当然不报错了,找不到就返回null,你要对返回值做判断才行
qq_40252810 2019-03-14
  • 打赏
  • 举报
回复
晕,知道咋回事了,还是自己粗心
android:name = "@+id/add_data"
这句错了,是android:id = "@+id/add_data"
运行的时候居然不报错,findViewById(R.id.add_data);也不报错,只是控件对象为空,看来不能太依靠android的报错机制,
qq_40252810 2019-03-14
  • 打赏
  • 举报
回复
引用 2 楼 bdmh 的回复:
findViewById当然不报错了,找不到就返回null,你要对返回值做判断才行

对的,我这次是xml里面写错了以至于找不到,还是得多练习啊,谢谢了

80,352

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧