MainActivity.kt没有看到按钮的ID?

时间:2018-05-01 08:17:05

标签: android kotlin

代码:

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

    button3.setOnClickListener { }
}

IDE错误代码的屏幕截图:link

我不知道错误可能是什么。重新加载和重建并没有帮助。

3 个答案:

答案 0 :(得分:3)

您在MainActivity的{​​{1}}(或任何其他)方法范围之外编写代码。

您的代码是:

onCreate

但必须是:

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

    button3.setOnClickListener { }
}

您可以对方法,内部类等使用类级声明,但不能编写代码。

只有使用Kotlin Android Extensions才能直接通过其ID调用视图。检查您是否正在使用它并将代码移动到方法范围之一,代码将起作用。

答案 1 :(得分:0)

所有操作必须在任何功能内。您在函数外写的button3.setOnClickListener { }。 当您添加apply plugin: 'kotlin-android-extensions' app.gradle文件时,可以通过ID直接使用小部件。如果没有这个,你需要声明你的btn。

答案 2 :(得分:-1)

你必须进入 gradle 脚本并选择 build.gradle(module.....) 并添加这一行: ( id 'kotlin-android-extensions' ) 在插件{ id 'com.android.application' id 'kotlin-android' 这里 } 并立即同步