Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin Android首个应用程序未解析参考文本视图按钮等_Android_Kotlin_Textview - Fatal编程技术网

Kotlin Android首个应用程序未解析参考文本视图按钮等

Kotlin Android首个应用程序未解析参考文本视图按钮等,android,kotlin,textview,Android,Kotlin,Textview,我是Android和Kotlin开发的新手 我想用一个简单的“Hello World”开始,但我已经遇到了问题 我在MainActivity中添加了一个Textview,并希望设置一个onClick侦听器来更改我拖到活动中的Textview的文本 编译器现在抱怨“TextView”是一个未解析的引用(按钮等也是如此) 然后,我按照一个网站的建议添加了一个kotlinx导入,但这无法解决任何问题。下面的代码示例中,我添加了任何带有星号作为行注释的内容 package com.example.my.

我是Android和Kotlin开发的新手

我想用一个简单的“Hello World”开始,但我已经遇到了问题

我在MainActivity中添加了一个Textview,并希望设置一个onClick侦听器来更改我拖到活动中的Textview的文本

编译器现在抱怨“TextView”是一个未解析的引用(按钮等也是如此)

然后,我按照一个网站的建议添加了一个kotlinx导入,但这无法解决任何问题。下面的代码示例中,我添加了任何带有星号作为行注释的内容

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年前就知道了(见我在评论中的评论)。但是谢谢你花时间回复。