`
AaronGo
  • 浏览: 27997 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

android inflate

阅读更多

        我们常常会遇到这样的情况,函数setContentView(R.layout.XXX);指定一个xml文件作为该Activity的布局文件,这样,如果我们要操作该xml文件中的Button、ImageView、TextView等组件,就可以直接用:Button  btn = (Button)findViewById(R.id.button);这样是可以的,但是如果我们要操作的这些组件并不在setContentView函数里面指定的xml文件中,这个时候再用上面的方法就会报空指针错误。所以我们要用到inflater

 

        LayoutInflater的作用是将layout文件下的xml文件实例化为View对象,即调用inflate方法将xml文件转成View。

获取LayoutInflater的方法有如下三种:

 

LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.main, null);
 
LayoutInflater inflater = LayoutInflater.from(context);
View layout = inflater.inflate(R.layout.main, null);
 
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.main, null);

 查看第二种方法的源码,实质上和第一种是一样。

 

 

public static LayoutInflater from(Context context) {
        LayoutInflater LayoutInflater =
                (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (LayoutInflater == null) {
            throw new AssertionError("LayoutInflater not found.");
        }
        return LayoutInflater;
    }

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics