layoutInflater.inflate(resourceId, root);
LayoutInflater主要是用来加载布局的,用法有两种:
LayoutInflater layoutInflater = LayoutInflater.from(context);
或者
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
然后用LayoutInflater的示例来加载布局:
layoutInflater.inflate(resourceId, root);
其实inflate方法有三个参数:第一个参数表示要加载的布局Id,第二个表示给该布局外层在嵌套一层父布局,不需要则传入null,第三个参数(以上并没有加入该参数)attachToRoot,怎么理解呢?
1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。
2. 如果root不为null,attachToRoot设为true,则会在加载的布局文件的最外层再嵌套一层root布局。
3. 如果root不为null,attachToRoot设为false,则root参数失去作用。
4. 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true。
当你使用inflate的时候需要注意是否需要添加父布局root,根据以上的说明,设置正确的参数。
我出现该错误的原因是:因为出现了上面的第4点:在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true。但由于传入的root为null,所以出现异常!