Android 两种不同的充气方法的区别

Android 两种不同的充气方法的区别,android,android-arrayadapter,android-spinner,convertview,Android,Android Arrayadapter,Android Spinner,Convertview,我的应用程序中有一个定制的旋转器阵列适配器。 下面是其getDropDownView()方法的代码: vista = inflater.inflate(R.layout.row_spinner, null); 当tv.setText()时,它抛出TextView的NullPointerException vista = inflater.inflate(R.layout.row_spinner, null); 然而,当我改变了 vista = inflater.inflate(R.layou

我的应用程序中有一个定制的旋转器阵列适配器。 下面是其getDropDownView()方法的代码:

vista = inflater.inflate(R.layout.row_spinner, null);
当tv.setText()时,它抛出TextView的NullPointerException

vista = inflater.inflate(R.layout.row_spinner, null);
然而,当我改变了

vista = inflater.inflate(R.layout.row_spinner, null);

vista = inflater.inflate(R.layout.row_spinner, null);
它起作用了

vista = inflater.inflate(R.layout.row_spinner, null);

有人能解释一下方法的两个不同签名之间的区别吗?

通过声明父根视图,您为该视图提供了父xml布局。然后,第三个布尔参数确定此子视图是否附着到父视图。从而确定子视图是否继承父视图的触摸方法

vista = inflater.inflate(R.layout.row_spinner, null);
无论哪种方式,都需要根据xml布局将视图放入透视图中,以便在整个视图层次结构中实现您所做的自定义和xml结构

vista = inflater.inflate(R.layout.row_spinner, null);
使用充气
(布局、父级、假)
您正在使用父布局对视图进行充气(在本例中为微调器) 不将其附着到父视图。 如果使用null,则不会为视图提供任何布局参数,因此textview的xml布局参数不存在

vista = inflater.inflate(R.layout.row_spinner, null);
发件人:

vista = inflater.inflate(R.layout.row_spinner, null);
根可选视图是生成的层次结构的父级 (如果attachToRoot为true),或者只是提供 返回层次结构根的一组LayoutParams值 (如果attachToRoot为false。)

vista = inflater.inflate(R.layout.row_spinner, null);
attachToRoot膨胀的层次结构是否应 是否附加到根参数?如果为false,则root仅用于 在XML中为根视图创建正确的LayoutParams子类

vista = inflater.inflate(R.layout.row_spinner, null);
返回
膨胀层次结构的根视图。 如果提供了root并且attachToRoot为true, 这是根;否则它就是膨胀的XML文件的根

vista = inflater.inflate(R.layout.row_spinner, null);
使用null不是从父视图分离视图的好方法,除非它是一个独立的功能,如警报对话框

vista = inflater.inflate(R.layout.row_spinner, null);
视图需要根视图,传递null有时会起作用,但这只是因为程序试图为视图创建默认xml参数

vista = inflater.inflate(R.layout.row_spinner, null);
更详细地说

vista = inflater.inflate(R.layout.row_spinner, null);
那么,如果我们不应该附加到该视图组,为什么您认为我们会被赋予该视图组呢?事实证明,父视图是膨胀过程中非常重要的一部分,因为它是评估正在膨胀的XML根元素中声明的LayoutParams所必需的。此处不传递任何内容类似于告诉框架“对不起,我不知道此视图将附加到哪个父视图。”

vista = inflater.inflate(R.layout.row_spinner, null);
这方面的问题是android:layout_xxx属性总是在父视图的上下文中进行计算因此,在没有任何已知父级的情况下,您在XML树的根元素上声明的所有LayoutParams都将被丢弃,然后您会问“为什么框架会忽略我定义的布局自定义?我最好检查一下,然后提交一个bug。”

vista = inflater.inflate(R.layout.row_spinner, null);