2017-11-17 19 views
0

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 클래스를 일부 변경해야합니까? 전체 개념을 명확하게 설명하십시오.

+0

공개로 변경해보세요 –

+0

@SarthakGandhi 수정 자의 말을 전적으로 공개하라고 하시겠습니까? –

+0

var isUseBluetooth : Boolean을 두 번 선언하는 것 같습니다. –

답변

1

SettingsManager의 lateinit 선언이 잘못되었습니다. 이 시도 :이 도움이

lateinit var settingsManager: SettingsManager 

대신 희망

var lateinit settingsManager: SettingsManager 

의.