如何解决如果在两种情况下都启用了数据绑定,binding.name.text和&name.text之间有什么区别
我刚开始学习数据绑定,但是在理解其技术时遇到了一些麻烦
在我的以下代码中,我已在应用Gradle文件中启用了数据绑定以便使用它并摆脱了findviewbyid()...因此,我在oncreate()函数之前将绑定变量创建为lateinit。然后我在binding = DataBindingUtil.setContentView(this,R.layout.activity_main)
这样的on create乐趣中对其进行了初始化,我将向您提供一个XML文件中的视图示例,以在...上完成该操作。
<EditText
android:id="@+id/nickName_editText"
style="@android:style/Widget.DeviceDefault.Light.EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/Margin"
android:layout_marginTop="@dimen/Margin"
android:layout_marginRight="@dimen/Margin"
android:hint="@string/hint"
android:inputType="textPersonName"
android:textAlignment="center" />
返回kotlin文件,下面这两行代码有什么区别(* 两行均有效)
nickName_editText.visibility = View.VISIBLE
binding.nickNameEditText.visibility = View.VISIBLE
我知道我们想摆脱findviewbyid()来使应用程序更快,但为什么我们不像第一行那样这样做并且我们也没有调用findViewById()
我是android开发的新手,所以我可能无法理解那些复杂的答案:-D
感谢您的帮助!
解决方法
这两种都是数据绑定的形式,binding.nicknameEditText是Android的实现,也是推荐的方法。 “ nickName_editText”是Kotlin数据绑定,并且存在已知的错误问题,当您进入更复杂的视图时,它们将开始弹出。
在MainActivity中扩展导入,您将注意到以下导入。
import kotlinx.android.synthetic.main.activity_main.*
开头表示对布局中所有视图的绑定。
如果您“删除kotlinx.android.synthetic.main.activity_main。*”,您会注意到“ nickName_EditText”现在未定义。
您还可以通过以下方式查看Kotlin字节码
clicking on tools/Kotlin/show Kotlin ByteCode
如果单击“ nickName_editText”,您会发现该部分的字节码将突出显示。
希望这能回答您所有的问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。