我试图用Kotlin在Android Studio(AS(4.1中创建一个新项目。我使用";空活动";并创建项目";MyTest"。
AS使用未命名的TextView创建activity_main.xml;你好世界";。我将id命名为myText。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/myText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
创建的MainActivity.kt是标准的,看起来像这个
package com.example.mytest
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
所有这些都是正常的,但是
现在在MAinActivity.kt中,应该可以键入
myText=";任何字符串";
但此处myText无法识别。我不明白。
我有一些早期AS版本的小测试项目。它们看起来完全相同,并且可以输入myText,myText可以立即识别。
我的编码或项目创建有什么问题!我已经创建了几个项目,并与以前的项目进行了比较,我认为我的工作没有错。谁有主意?
您需要在项目中集成Kotlin Android扩展,以便您的视图得到这样的识别。只需在build.gradle
:中添加以下行
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
本文中的更多信息:https://antonioleiva.com/kotlin-android-extensions/
但是
合成将在Kotlin 1.4.20中被弃用,https://youtrack.jetbrains.com/issue/KT-42121由于不是零安全的。如果你要维护你正在构建的项目一段时间,不使用Kotlin Android扩展会很糟糕。
上面链接中建议的替代方案是:
- ViewBinding
- FindViewById
- Kotterknife(已弃用(
- AndroidAnnotations
FindViewById是"官方"方法,它很容易使用,Kotlin建议ViewBinding在我阅读时有一些样板(我还没有使用它(。
只需在build.gradle (app)
的顶部添加以下行:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions' }
之后,在MainActivity.kt
文件中包括以下导入语句:
import kotlinx.android.synthetic.main.activity_main.*
欲了解更多清晰信息,请访问
`https://youtrack.jetbrains.com/issue/KT-42121`
之后别忘了同步你的渐变文件。。
As"kotlin android扩展";现在不推荐使用视图绑定。
为此,首先通过在android块下编写这行代码,在build.gradle文件中启用视图绑定。
buildFeatures {
viewBinding true
}
然后在活动文件中使用视图绑定功能
首先将用于绑定的全局变量声明为
private lateinit var binding: ActivityHomeBinding
这里ActivityHomeBinding是一个自动生成的类
然后在OnCreate((方法中编写这些代码
binding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(binding.root)