Android의 onCreate ()에서 사용하기 위해 사용자 정의 클래스 객체로 lateinit를 올바르게 구현하는 방법은 '속성 getter 또는 setter 예상'오류를 방지합니다.

수 쇼반 만달

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관