Kotlin Android首个应用程序未解析参考文本视图按钮等
我是Android和Kotlin开发的新手 我想用一个简单的“Hello World”开始,但我已经遇到了问题 我在MainActivity中添加了一个Textview,并希望设置一个onClick侦听器来更改我拖到活动中的Textview的文本 编译器现在抱怨“TextView”是一个未解析的引用(按钮等也是如此) 然后,我按照一个网站的建议添加了一个kotlinx导入,但这无法解决任何问题。下面的代码示例中,我添加了任何带有星号作为行注释的内容Kotlin Android首个应用程序未解析参考文本视图按钮等,android,kotlin,textview,Android,Kotlin,Textview,我是Android和Kotlin开发的新手 我想用一个简单的“Hello World”开始,但我已经遇到了问题 我在MainActivity中添加了一个Textview,并希望设置一个onClick侦听器来更改我拖到活动中的Textview的文本 编译器现在抱怨“TextView”是一个未解析的引用(按钮等也是如此) 然后,我按照一个网站的建议添加了一个kotlinx导入,但这无法解决任何问题。下面的代码示例中,我添加了任何带有星号作为行注释的内容 package com.example.my.
package com.example.my.mynewapp
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.fragmentX.view.* // *
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView: TextView = findViewById(R.id.testView) as TextView // *
textView.setOnClickListener { // *
textView.text = "You clicked me! You flipping clicked me!" // *
} // *
}
}
有人知道发生了什么吗?你在课堂上夸大了
activity\u main.xml
此
TextView
是否属于上述布局如果有,则不需要
findViewById()
只需将以下内容添加到您的导入:
import kotlinx.android.synthetic.main.activity_main.*
而不是:
import kotlinx.android.synthetic.main.fragmentX.view.*
然后在活动类中的任何位置使用
testView
(这是TextView
的id,除非是打字错误)。它应该已经自动导入,但应该有
import android.widget.<WhateverIsMissing>
导入android.widget。
用未解析的引用替换正在验证的内容- 在项目文件夹下有渐变脚本
- 打开build.gradle(模块:您的应用程序名称)
- 将“id android扩展”添加到插件中
- 然后同步它
如果您为活动、片段等定义了多个布局,请确保相应控件的类在布局之间匹配。这是我看到此错误消息的最常见情况。在build.gradle中添加应用插件:“kotlin android extensions”
通过双移位搜索并编写“build”,然后在依赖项部分添加插件,然后应该为您显示导入选项如果您使用Android Studio v.4.2.1,您必须在(build.gradle)文件中添加这一行,如下所示:-
id 'kotlin-android-extensions'
刚刚解决了这个问题,显然你必须导入android.widget.TextView,这就解决了这个问题。不需要否决,我们都需要学习。不需要在kotlin中使用findViewById。您可以使用id直接访问视图。@AkshayRaiyani您可以举一个如何使用id访问视图的示例吗?@user2868623这是一个关于如何使用id访问视图的好博客。是的,名为“testView”的TextView属于布局。添加您的导入没有任何作用;我只能在显式添加“importandroid.widgets.TextView”时进行编译。在我的类中“膨胀”xml文件是什么意思?@TheFox如果是这种情况,则会出现问题,因为您应该逐个导入布局的所有视图。但科特林的情况并非如此。使用Kotlin的一个优点是,您不需要在活动中使用findViewById()来访问其视图。你只需要像我一样导入布局就可以了。如果在此之后无法识别TextView,则它不属于
活动\u main.xml
,或者您需要清理并重建项目。为了清楚起见,我必须导入android.widgets.TextView,不是吗?清理和重建并不能解决问题,activity_main.xml确实包含TextView。但是,android.widget.TextView
自动导入到在其代码中使用TextView的任何类中。你不必导入它。即使你写了像val-tv:TextView…
AS这样的东西,你也可以导入android.widget.TextView
,或者按Alt-Enter接受建议。是的,1.5年前就知道了(见我在评论中的评论)。但是谢谢你花时间回复。