安卓里面的Inflate的作用以及注意事项

  没为ViewPager第2个pager设置view所以报的空异常。

inflate控件加载注意空指针:
1、对于一个没有被载入或者想要动态载入的界面,都需要使用LayoutInflater.inflate()来载入;
2、对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。

获得 LayoutInflater 实例的三种方式

1.LayoutInflater infalte=context.getSytemService(Context.LAYOUT_INFLATE_SERVICE);

2.LayoutInflater inflater = getLayoutInflater(); //调用Activity的getLayoutInflater()

3.LayoutInflater flater = LayoutInflater.from(this);

1、通俗的说,inflate就相当于将一个xml中定义的布局找出来.
因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组件.

View view = flater.inflate(R.layout.example, null);注意空指针,加判断

2. ViewGroup showView=(LinearLayout)View.inflate(context, R.layout.il_hall, null);
如何转型,为什么设置null,这样就返回控件,而不是root
第二步:
public View getView(){
//TODO:小心空指针异常
// 由于View.inflate(context, R.layout.il_hall, null); 给viewgroup的参数赋值 中间容器定义了RelativeLayout
if(showView.getLayoutParams()==null){
LogUtil.info(BaseView.class, "设置layout参数");
RelativeLayout.LayoutParams layoutParams=
new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
showView.setLayoutParams(layoutParams);
}
return showView;
};

inflate.inflate(int resource, ViewGroup root, boolean attachToRoot)

如果attachToRoot为false,就表示root只是提供个控件布局参数;如果attachToRoot是true,把这个view解析挂载到root中,返回这个root,;

如果root是null,返回值也是view,是xml的根节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值