Android app에 Dialogflow (이전 api.ai) 에이전트의 통합을 구현하려고합니다. , Kotlin 사용. 다른 Q & A 약 kotlin lateinit
을 확인하고 안드로이드의 onCreate() 라이프 사이클은 Kotlin에서 null 객체와 해당 !!
및 ?
액세스로 더티 코드 작성을 피하기 위해 늦은 초기화 구현에 이상적입니다. 그러나 lateinint
자체 정의 클래스의 인스턴스를 시도 할 때 '속성 가져 오기 도구 또는 설정자가 예상'오류가 발생합니다. 나에게 lateinit settingsManager
라인 '부동산 게터 또는 세터 예상'의 오류를 제공안드로이드에서 onCreate()에서 사용하기 위해 lateint를 올바르게 구현하는 방법 'Property getter or setter expected'오류가 발생하지 않도록하기
class AIApplication : Application() {
private var activitiesCount: Int = 0
var lateinit settingsManager: SettingsManager
//private set
private val isInForeground: Boolean
get() = activitiesCount > 0
override fun onCreate() {
super.onCreate()
settingsManager = SettingsManager(this)
}
: 여기에 코드입니다.
class SettingsManager(private val context: Context) {
private val prefs: SharedPreferences
private var useBluetooth: Boolean = false
var isUseBluetooth: Boolean
get() = useBluetooth
set(useBluetooth) {
this.useBluetooth = useBluetooth
prefs.edit().putBoolean(PREF_USE_BLUETOOTH, useBluetooth).commit()
val controller = (context.applicationContext as AIApplication).getBluetoothController()
if (useBluetooth) {
controller!!.start()
} else {
controller!!.stop()
}
}
init {
prefs = context.getSharedPreferences(SETTINGS_PREFS_NAME, Context.MODE_PRIVATE)
useBluetooth = prefs.getBoolean(PREF_USE_BLUETOOTH, true)
}
companion object {
private val SETTINGS_PREFS_NAME = "ai.api.APP_SETTINGS"
private val PREF_USE_BLUETOOTH = "USE_BLUETOOTH"
}
}
그래서이 작업을 수행하는 적절한 방법은 무엇입니까 다음은 SettingsManager
정의는? SettingsManager 클래스를 일부 변경해야합니까? 전체 개념을 명확하게 설명하십시오.
공개로 변경해보세요 –
@SarthakGandhi 수정 자의 말을 전적으로 공개하라고 하시겠습니까? –
var isUseBluetooth : Boolean을 두 번 선언하는 것 같습니다. –