您的位置:首页 > 其它

使用LayoutInflater与findViewById结果为null问题

2016-01-22 15:07 381 查看
Toast toast = new Toast(MainActivity.this);
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog, null);
if(view == null){
Log.i("view", "--null");
}
ImageView img = (ImageView)findViewById(R.id.imageView1);
if(img == null){
Log.i("img", "--null");

}

上面这段代码在运行时发现View不为null,但img始终为null,找了很久没找到原因,最后经过网上搜索才得以解决。下面把解决思路和解决方法分享一下:

1、查看R.java文件,确认其中已经成功生成myview和imageview的id

2、思考:在activity中直接调用findViewById方法,它的完整形式是this.findViewById().而我所需要的控件是不存在当前activity的布局中的,那怎么改呢

3、尝试ImageView
view=(ImageView)view.findViewById(R.id.imageview);即通过控件所在的view调用findViewById方法,最后发现可以获取到正确的控件了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息