1.可以直接使用layout id 名称获取当前view对象
//layout
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@color/colorPrimary"
android:id="@+id/root_view"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:text="Hello World"
android:id="@+id/hello_world"
android:text="@string/time_span"
style="@style/basicTextStyle" />
</FrameLayout>
//kotlin 代码
package cn.enjoytoday.test
//这是重点,需要手动添加或者android studio提示添加
import kotlinx.android.synthetic.main.activity_drag_test.*
class DragTestActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
setContentView(R.layout.activity_drag_test)
hello_world.text = "完美的写法"
}
}
就目前为止都是完美的用法,代码简洁的不要不要的。就网上目前情况看,一般的找不到view无法直接通过id代替对象操作使用大多是由于未能成功导入kotlin-android-extensions插件或者直接没有添加,添加方式如下:
在app目录下的 bulid.gradle的文件中添加 以下两行代码来添加插件,然后重新加载gradle,原理同在maven中添加了新的插件或者依赖需要刷新maven
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
参考链接:(kotlinx.android.synthetic.** 坑点_飞云先生-CSDN博客_android synthetic)