kaptDebugKotlin СБОЙ, когда класс kotlin использует класс java (K_JavaSource.example
gen by kapt), с ошибкой cannot find symbol: K_JavaSource
.
Когда я удаляю @KvoWatch(name = K_JavaSource.example, thread = KvoWatch.Thread.MAIN)
из KvoKotlinActivity.kt
, он будет работать нормально.
Кстати, я использую K_KtSource.time
и 'K_JavaSource.example' в классе java тоже отлично работают.
демонстрационный код (или см. Git https://github.com/drumge/android-kvo):
KvoKotlinActivity.kt
class KvoKotlinActivity : Activity() {
private val TAG = "KvoKotlinActivity"
private lateinit var ktSource: KtSource
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ktSource = KtSource()
ktSource.aa = 10
ktSource.sChar = 'c'
Kvo.getInstance().bind(this, ktSource)
}
@KvoWatch(name = K_KtSource.time, thread = KvoWatch.Thread.MAIN)
fun onTimeChange(event: KvoEvent<KtSource, Long>) {
Log.i(TAG, "onTimeChange oldValue: ${event.oldValue}, newValue: ${event.newValue}, source: ${event.source}")
}
@KvoWatch(name = K_JavaSource.example, thread = KvoWatch.Thread.MAIN)
fun onExampleChange(event: KvoEvent<KtSource, String>) {
Log.i(TAG, "onTimeChange oldValue: ${event.oldValue}, newValue: ${event.newValue}, source: ${event.source}")
}
}
K_KtSource.kt
gen by kapt
final object K_KtSource {
final const val time: String = "time"
}
K_JavaSource.java
gen by kapt
public interface K_JavaSource {
String example = "example";
}