Android 스튜디오를 업데이트하면 activity_main.xml의 구성 요소를 더 이상 사용할 수 없습니다.

2875 단어 AndroidStudioKotlin

아무것도하지 않았지만 activity_main.xml이 손상되었습니다! !



이 책에 따라 Android 앱을 작성했는데, 아무것도 아닌 곳에서 오류가 발생하게되었습니다.
예를 들면 이런 곳.



이 btStart가 빨간색 문자가되어 Unresolved reference라고합니다.
위의 btStart는 Button의 처리에 관한 것이지만, Button에 한하지 않고 같은 현상이 된다.

가장 먼저 타이포의 가능성을 생각했지만, activity_main.xml을 확인하면 잘못되지 않은 것 같았다.

여기의 기재는 교본대로이고, 지금까지도 몇번이나 쓰고 있다.

가능한 한 직전에 Android 스튜디오를 업데이트했습니다.

원래 activity_main.xml의 객체를 어떻게 얻는지



기본적으로 findViewById를 사용하여 버튼 객체를 얻습니다.
val btStart = findViewById<Button>(R.id.btStart)

(실제로 다른 교본은 findViewById를 사용하는 방법을 사용합니다.)
이것을 매번 실행하는 것이 번거롭기 때문에 kotlin-android-extensions라는 plugin을 사용하여 시작과 같은 쓰기가 가능합니다.

kotlin-android-extensions 추가



플러그인을 어디에서 읽고 있는지 확인하십시오.
app/build.gradle (: app)을 들여다 보았습니다.
업데이트 전부터 사용하고 있는 다른 파일은 이런 느낌:
apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

(以下省略)

이번에 새롭게 작성한 프로젝트의 파일은 다음과 같은 내용으로 되어 있었다:
plugins {
    id 'com.android.application'
    id 'kotlin-android'
}

(以下省略)

분명히 kotlin-android-extensions의 플러그인이 들어 있지 않은 것 같습니다.
이것을 넣어 보자.
plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-android-extensions'
}

나머지는 MainActivity.kt에서 가져옵니다.import kotlinx.android.synthetic.main.activity_main.*추가하면 안전 오류가 사라졌습니다.

플러그인을 작성하는 방법이 바뀌는 점



위의 비교를 보면 같은 plugin이 사용되고 있는 것을 알 수 있지만, 쓰는 방법이 약간 바뀌고 있다.
. . . 왜?

조사해 보면 그 문장이 발견되었다.
Gradle

The version should be literal in this block, and it cannot be applied from another build script.
Alternatively, you can use the older apply plugin approach:apply plugin: 'kotlin'It's not recommended that you apply Kotlin plugins with apply in Gradle Kotlin DSL – see why.

분명히 apply plugin: 'kotlin'는 권장되지 않는 것 같습니다.
앞으로는 plugins {id 'com.android.application} 를 사용하는 것이 좋을 것 같다.
(라고 할까 처음부터 그렇게 되어 있는 것이겠지만.)

죄송합니다. 라는 것은 아니다.



이 문제에 대해 조사하고 있다면 이런 기사가 발견되었습니다.
Kotlin Android Extensions의 미래
이것을 읽는 한, kotlin-android-extensions는 추천되지 않고, 가까이 삭제되어 kotlin-parcelize라는 것으로 바뀝니다.
여기등은 추구 수정해 나가야 할 것 같다.

좋은 웹페이지 즐겨찾기