您的位置:首页 > 移动开发 > Android开发

AndroidStudio中使用Kotlin--findViewById

2017-06-06 16:35 801 查看
虽然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)


做完这些就可以开始愉快的玩耍了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: