AndroidStudio中使用Kotlin--findViewById

xiaoxiao2021-02-27  134

虽然Kotlin已经出来一段时间了,但在Google将Kotlin设置为Android首选开发语言之前,也只是简单了解了一下。

现在准备把以前的一个项目改用kotlin写,也算是一边学一边写。

直接使用了官方提供的侧边栏代码,转换成了kotlin代码,还是遇到了一些问题。

①忘了怎么操作的,findViewById直接报错了

val toolbar = findViewById(R.id.appToolbar) as Toolbar 会报错,改成如下就没问题了 val toolbar = findViewById<ToolBar>(R.id.appToolbar)

②看到网上有介绍说kotlin可以直接通过id找到控件,之前的findviewbyid就可以不用写了,但是

要先在module的build.gradle中配置

apply plugin: 'kotlin-android-extensions' 接着在使用控件的时候选择联想列表里面的kotlin相关控件

AndroidStudio会自动引用

import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.app_bar_main.*

activity_main、app_bar_main这些引用的都是控件所在的布局文件

有文章介绍这一点的时候都会引用第一个,这是不全面的,还是交给as去引用,上图中toolbar引用的就是第二个

③经实践,在自定义布局的dialog中不能省略findViewById,尽管有时候AndroidStudio会帮你像②中那样帮你引用好,

还是要老老实实的写好,不然运行的时候会爆出控件为null的错误

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.AppCompatEditText.addTextChangedListener(android.text.TextWatcher)' on a null object reference这个错就是因为找不到AppCompatEditText造成的。

用之前老老实实的找到这个控件就冇问题了

var et_file_name: AppCompatEditText =view.findViewById<AppCompatEditText>(R.id.et_file_name)

做完这些就可以开始愉快的玩耍了

转载请注明原文地址: https://www.6miu.com/read-14595.html

最新回复(0)