安卓里面的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的根节点。

你可能感兴趣的:(android)