Kotlin을 사용하여 Dialogflow (이전의 api.ai) 에이전트와 Android 앱의 통합을 구현하려고합니다. kotlin에 대한 다른 Q & A를 확인 lateinit
했으며 Android의 onCreate () 수명주기 는 Kotlin에서 null 개체와 해당 !!
및 ?
액세스로 더티 코드를 작성하는 것을 방지하기 위해 후기 초기화 구현에 이상적입니다 . 하지만 자체 정의 클래스의 인스턴스를 시도 할 때 ' Property getter or setter expected ' 라는 오류가 발생 lateinint
합니다. 다음은 코드입니다.
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)
}
줄에 ' Property getter or setter expected ' 라는 오류가 lateinit settingsManager
표시됩니다. SettingsManager
정의 는 다음과 같습니다 .
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의 lateinit 선언이 잘못되었습니다. 이 시도 :
lateinit var settingsManager: SettingsManager
대신에
var lateinit settingsManager: SettingsManager
도움이 되었기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다