1.最近在写一个小app,在一个java class中,以LayoutInflater.from(context).inflate(R.layout.item, this, false);的方式去加载布局,当我准备找到布局中的某个控件时,比如imageView,假设其idiv_pic

private ImageView mIvIcon;

private View mView;

在自定义的init()方法中获取imageView

一开始是这样子写的

private void init(Context context){

...

mView = LayoutInflater.from(context).inflate(R.layout.item, this, false);

mIvIcon = findViewById(R.id.iv_pic);

...

}

结果运行之后出错了,设置断点之后debug,当运行到这里的时候,发现mIvIcon竟然为null!!!!

后来才明白在activity中直接调用findViewById方法,它的完整形式是this.findViewById(),但是我写的这个java class显然到目前为止还没有绑定view鸭!!

所以正确的写法应该是

private void init(Context context){

...

mView = LayoutInflater.from(context).inflate(R.layout.item, this, false);

mIvIcon = mView.findViewById(R.id.iv_pic);

...

}

更多相关文章

  1. Xamarin.Android(安卓)自定义VideoView 进度条
  2. 关于Android布局中键盘遮挡问题
  3. android不同activity共享数据的几种方法
  4. Android属性动画---Property Animation(四)
  5. Android(安卓)Studio使用心得 - 常见问题集锦
  6. Android中Sqlite使用初步
  7. Android之开发性能优化简介
  8. Android(安卓)ActionBar完全解析,使用官方推荐的最佳导航栏(上)
  9. AndroVM 可以让你在虚拟机环境中运行 Android

随机推荐

  1. 个人文章汇总
  2. Android(安卓)Studio:resource android:at
  3. Android(安卓)启动过程
  4. Android(安卓)EditText默认不弹出输入法
  5. Twitter V1.1在Android中的应用
  6. android app启动动画的实现
  7. android中HttpURLConnection调用getRespo
  8. 初识ProgressBar
  9. android ndk Hello World
  10. Android读取xxx.properties配置文件中文