MainActivity.kt не видит идентификатор кнопки? - PullRequest
0 голосов
/ 01 мая 2018

Код:

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

    button3.setOnClickListener { }
}

Снимок экрана с кодом ошибки IDE: ссылка

image

Понятия не имею, в чем может быть ошибка. Перезагрузка и восстановление не помогли.

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Все действия должны быть внутри любой функции. Ваш button3.setOnClickListener { } написан вне функции. А когда вы добавляете apply plugin: 'kotlin-android-extensions' ваш файл app.gradle, виджеты могут использоваться напрямую через ID. Без этого вам нужно объявить свои бтн.

0 голосов
/ 01 мая 2018

Вы пишете код вне области действия MainActivity onCreate (или любой другой) метода.

Ваш код:

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

    button3.setOnClickListener { }
}

Но должно быть:

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

        button3.setOnClickListener { 
            // do something
        }
    }
}

Вы можете использовать объявление уровня класса для методов, внутренних классов и т. Д., Но не для написания кода.

И вызывать представления напрямую по их идентификаторам можно только с помощью Kotlin Android Extensions . Проверьте, используете ли вы его и переместите свой код в область действия одного из методов, и код заработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...