android View.inflate 空指针异常
view=View.inflate(context,R.layout.home_page,null);,debug显示就是这行是空的,view=null。为什么用infl...
view = View.inflate(context, R.layout.home_page, null);,debug显示就是这行是空的,view=null。为什么用inflate会出现空指针异常,可能会哪出的问题,R.layout.xxx文件存在的,之前别的程序用这个也没出现空指针。
context也是存在的,不然也编译不过。 展开
context也是存在的,不然也编译不过。 展开
2个回答
推荐于2018-03-23 · 知道合伙人软件行家
关注
展开全部
没为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的根节点。
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的根节点。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
View.inflate(context, R.layout.home_page, null);
layou = LayoutInflater.from(context);
你换下方法View view = layou.inflate(R.layout.home_page, null);
layou = LayoutInflater.from(context);
你换下方法View view = layou.inflate(R.layout.home_page, null);
更多追问追答
追答
自定义的adapter类中并没有把R文件import进去。因为R文件所在的package是和mainActivity包相同名字,但是和自定义adapter包不同
导入的是android.R而不是gen包中的那个R文件,所以导致找不到layout
看下是不是这两个原因
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询