我有事情的代碼解決。我無法調試也沒有得到錯誤,只是一個普通的黑屏,所以我假設對象是懶加載的,但實際上並不是。另外,在對象初始化函數是怎麼回事,
但墜毀在SharePreferences檢索從JSON發生回科特林對象,但沒有錯誤時,拋出和模擬器黑屏是混亂。在Android Studio中可能更好的調試支持可能有助於這裏和所需的改進範圍。
於是我就以隨機抽樣方式計算表達式,找出問題在getPref方法和atlast加入,而不是幫助,再還學什麼物化的手段,將這樣做不久。
但關閉這些變化在代碼完成後,作爲爲解決該問題如下:
class LoginActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
BaseData.loadPrefData()
if(BaseData.userId == 「」) {
//Do something
}
}
}
object BaseData : Observable() {
var initialSyncDone:Boolean = false
var isOffline:Boolean = true
var userId: String = 「」
fun loadPrefData // init works but debugging was not happening so no errors before
{
if(Preferences.pref!!.contains("user")) {
userId = if(Preferences.getPref<User>("user") != null) Preferences.getPref<User>("user")!!.id!! else ""
}
}
// Preference class get from SharePreferences
// **reified** was the missing one, i didn't had before, so it was
// crashing to convert from Preferences back to Kotlin Object, but no debug errors.
inline fun <reified T> getPref(key:String) : T?{
val gson = Gson()
val jsonString = pref!!.getString(key,"")
if(jsonString != "") {
val type = object : TypeToken<T>() {}.type
return gson.fromJson<T>(jsonString, type)
}
else
return null
}
'在這一步// BaseData本身當屬無效,因此應用程序去blank' - 如果BaseData爲空,' BaseData.userId'會導致NullPointerException。 Kotlin的懶惰對象加載基於JVM類加載 - 你根本不會注意到這種懶惰。 –