我在kotlin代码实验室苦苦学习android的一个基础知识。我是一个初学者,在闭锁中学习编程是为了好玩。
这就是所讨论的教程
在本教程的开头,它说要获得对named_binding绑定的可为空的引用,然后使用
private val binding get()=_binding!!
要获得它的一个版本,我们可以在不使用?安全问题无效。目前一切正常。
但是,在步骤4中,它显示了以下代码:
重写fun onCreateView(Inflater:LayoutInflater,Container:ViewGroup?,SavedInstanceState:Bundle?):View?{
_binding=fragmentletterlistbinding.inflate(inflater,container,false)
val view=binding.rootreturn视图}
为什么我们在分配视图时引用_binding来膨胀视图,然后在下一行引用binding?
为什么我们在分配视图时引用_binding来膨胀视图,然后在下一行引用binding?
这里要理解两个概念。
_binding
被认为是一个支持属性--即保存值的实际变量引用。在这种情况下,变量是可为空的类型。binding
是一个标准属性--也就是说,它提供了对底层备份字段的访问。在本例中,它使用_binding
作为支持属性,以便将_binding
公开为非空。因此--由于binding
只是将_binding
公开为非空值,所以必须首先设置_binding
。这就是为什么它被分配了inflate调用的值。还要注意,_binding
是一个var
,这意味着它可以被重新赋值,而binding
是一个val
,这意味着它不能被重新赋值。因此在膨胀视图时尝试使用binding
将无法编译。
最后,他们为什么使用binding
来获取视图还不清楚。可能只是为了使用binding
作为引用类绑定的单个属性的方便性/一致性。使用_binding?.root
也可以很好地工作。