Почему моя кнопка в котлине не работает? (андроид студия)

Просто даже этого не распознает. На самом деле я пробую эту ссылку: https://thewikihow.com/video_S4jkcRhembY

Вот мой код в ActivityMain:

<Button
        android:id = "@+id/requestpermissionbutonu"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:text = "Hello World!"
        app:layout_constraintBottom_toBottomOf = "parent"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintHorizontal_bias = "0.5"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toTopOf = "parent" />

А в mainactivity.kt вот так использую:

requestpermissionbutonu.setOnClickListener {
            requestPermissions()
        }

Там написано так: Unresolved reference: requestpermissionbutonu

импорт тоже в порядке, как видно здесь:

package com.example.camlockotlin
import android.Manifest
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.content.pm.PackageManager
import android.util.Log
import androidx.core.app.ActivityCompat
1
0
1 173
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы должны сначала привести кнопку из xml в Kotlin:

val requestpermissionbutonu = findViewById<Button>(R.id.requestpermissionbutonu)

то вы можете установить OnClickListener

Вам нужно это в вашем модуле приложения build.gradle

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

Код, который вы используете, основан на синтетическом связывании Kotlin, что означает магию, которая находит представления для вас и создает переменную, на которую вы можете ссылаться, без необходимости что-либо делать. Вот что делает плагин kotlin-android-extensions

Синтетика устарела, поэтому вы не должны ее использовать. Ответ @A Honey Bustard - лучший (и нормальный) способ справиться с этим с помощью findViewById, если вы не хотите использовать библиотеку View Binding

Другие вопросы по теме