AOSP Development: Kotlin не может получить доступ к идентификатору класса R, но Java может! Почему?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 AOSP Development: Kotlin не может получить доступ к идентификатору класса R, но Java может! Почему?

Сообщение Anonymous »

Недавно я начал погружаться в разработку AOSP и слежу за некоторыми лабораторными работами по коду, изначально написанными на Java, о том, как настроить SystemUI (для автомобильного AOSP).
Я проверил эти части CarSystemUI теперь использует Kotlin, и я хотел переделать эту лабораторную работу по коду.
Я следовал инструкциям и добавил codelab_layout.xml. Затем я обновил sysui_overlay_window.xml и добавил этот ViewStub:


Который объявляет идентификатор codelab_stub.
Загадка заключается в том, что на следующем шаге я должен добавить контроллер представления. В Java лаборатория кода просит добавить:
@SysUISingleton
public class CodeLabViewControllerJava extends OverlayViewController {

@Inject
public CodeLabViewControllerJava(
OverlayViewGlobalStateController overlayViewGlobalStateController) {
super(R.id.codelab_stub, overlayViewGlobalStateController);
}
}

который прекрасно компилируется. Однако, если я добавлю контроллер представления в Котлине, например:
@SysUISingleton
class CodeLabViewControllerKotlin @Inject constructor(
overlayViewGlobalStateController: OverlayViewGlobalStateController
) : OverlayViewController(R.id.codelab_stub, overlayViewGlobalStateController)

Я получаю следующую ошибку компиляции:
CodeLabViewControllerKotlin.kt:12:32: error: unresolved reference: codelab_stub
) : OverlayViewController(R.id.codelab_stub, overlayViewGlobalStateController) {
^

что меня сбивает с толку, поскольку код Java компилируется без проблем.
Есть идеи, почему это происходит?
PS: Если я заменю R.id.codelab_stub жестко закодированным Int, код Kotlin компилируется нормально.
Обновление:
Я считаю, что это проблема AAPT с Kotlin, потому что если я создам следующий класс Java:
package com.android.systemui.car.codelab;

import com.android.systemui.R;

public class KRes {
static class Id {
static final int codelab_stub = R.id.codelab_stub;
}
}

Затем следующий код компилируется нормально:
@SysUISingleton
class CodeLabViewController @Inject constructor(
overlayViewGlobalStateController: OverlayViewGlobalStateController
) : OverlayViewController(KRes.Id.codelab_stub, overlayViewGlobalStateController)


Подробнее здесь: https://stackoverflow.com/questions/787 ... va-can-why
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • AOSP Development: Kotlin не может получить доступ к идентификатору класса R, но Java может! Почему?
    Anonymous » » в форуме Android
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Нет сертификата подписания "" "Найдено:" IOS Development Development ".
    Anonymous » » в форуме IOS
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Невозможно запустить настроенный веб -сервер Development Studio Development
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Java vs Kotlin для Android Development? [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Java vs Kotlin для Android Development? [закрыто]
    Anonymous » » в форуме Android
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»