setOnClickListener 未解析的引用

setOnClickListener unresolved reference

我现在想要的只是在我的主 activity 中有一系列按钮,这让我进入其他意图,在那里我可以测试其他一些东西并继续学习。

我真的不喜欢留下警告,所以当 android:onClick 抛出 Old versions of the platform do not properly support resolving android:onClick 时,我读了很多书,发现我应该使用 setOnClickListener。我看到了很多关于 setOnClickListener 的答案,我找到了很多解决方案,但我花了很多时间才找到这个:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val introduction = findViewById<Button>(R.id.introduction)
        val needXML = findViewById<Button>(R.id.needXML)

        introduction.setOnClickListener {
            Toast.makeText(this@MainActivity, "button 1 works!", Toast.LENGTH_SHORT).show()
        }
        needXML.setOnClickListener {
            Toast.makeText(this@MainActivity, "button 2 works!", Toast.LENGTH_SHORT).show()
        }
    }
}

我仍然得到 Unresolved reference: Button。我在谷歌上搜索了很多,最后设法通过添加解决了这个问题:

import android.widget.Button

找到 import android.widget.Toast 制作简单的警报很容易,因为这部分包含在许多教程中,但是 import android.widget.Button - 根本没有。

所以,故事到此结束,我的问题是:

1:我使用 setOnClickListener 的方式是否正确,或者是否有比为每个可点击元素实现 val 更好的方法?

2:我想使用 whenswitch 的 kotlin 版本)来确定点击了什么...这可能吗,还是我想太多了?

3:为了 setOnClickListener,我阅读了很多 tutorials/answer,看到了很多“只做 buttonId.setOnClickListener”的提示。然而,我发现 import android.widget.Button 真是个奇迹——就像这是显而易见的事情一样。这对我来说显然不明显。我怎么知道将来我应该导入什么才能使用其他功能?也许我应该从阅读一些文档开始 - 如果是这样的话,那么任何人都可以 post 我 link 我应该从哪里开始?我试图自学一切,但我是从头开始,现在我真的觉得我错过了一些非常重要的东西。

Is the way I'm using setOnClickListener even correct, or is there a better way than implementing an val for every single clickable element?

findViewById<Button>(R.id.introduction).setOnClickListener {

}

应该也可以工作,好像您以后不需要对按钮的实际引用。

I'd like to use when (kotlin version of switch), to determine what was clicked... is this possible, or am I overthinking simple things?

有一种方法可以做到,但实际上并不需要,它变成了一个庞大的when语句,可能难以管理,坚持你在这里做的事情。

How should I know in future, what should I import in order to use other functions?

体验、实践、阅读文档,并让 IDE 帮助您。根据您的 OS,android studio 可以提供为您导入必要依赖项的选项,通常您可以将光标悬停在未解析的引用(通常是红色)上以查看 android studio 是否为您提供导入选项