我只是試圖實現onActivityReenter
在重新輸入轉換運行之前執行特殊的UI更新。我硬是把塊從onActivityResult請求代碼,並將其分成2個部分,一部分進入onActivityReenter,對方呆在那裏:解組意外拋出異常拋出異常,但只在onActivityReenter期間
BEFORE: (onActivityResult)
if (resultCode == RESULT_OK) {
// replace the MatchPlaySubmit model
data?.let {
this.dataBinding.submitModel = data.getMatchPlaySubmitModel()
val profIndex = data.getMatchPlayFinalProfileIndex()
dataBinding.matchPlay.matchPlayPicker.jumpToProfileNumber(profIndex + 1)
this.updatePickerView()
}
}
override fun onActivityReenter(resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK && data != null) {
// makes sure that the data is from pager, since there no request code
> if (data.getStringExtra("source") == "mppager") { // causes CRASH
val profIndex = data.getMatchPlayFinalProfileIndex()
dataBinding.matchPlay.matchPlayPicker.jumpToProfileNumber(profIndex + 1)
}
}
}
AFTER: (onActivityResult)
if (resultCode == RESULT_OK) {
// replace the MatchPlaySubmit model
data?.let {
this.dataBinding.submitModel = data.getMatchPlaySubmitModel()
this.updatePickerView()
}
}
然而,新的代碼onActivityReenter
總是會導致崩潰。崩潰就好像我沒有正確設置類加載器的額外功能。但是,我只是添加到kotlin擴展func以確保extras的classloader被設置爲我的。然而,崩潰總是會發生。
inline internal fun Intent.setMatchPlaySubmitModel(model: MatchPlaySubmitModel?) {
this.putExtra("@[email protected]", model)
this.setExtrasClassLoader(MatchPlaySubmitModel::class.java.classLoader)
}
android.os.BadParcelableException:ClassNotFoundException的時 解組:letstwinkle.com.twinkle.api.MatchPlaySubmitModel 在android.os.Parcel.readParcelableCreator(Parcel.java:2535) 在android.os .Parcel.readParcelable(Parcel.java:2461) at android.os.Parcel.readValue(Parcel.java:2364) at android.os.Parcel.readArrayMapInternal(Parcel.java:2717) at android.os.BaseBundle .unparcel(BaseBundle.java:269) at android.os.BaseBundle.getString(Bas eBundle.java:992) 在android.content.Intent.getStringExtra(Intent.java:6211) 在letstwinkle.com.twinkle.MatchPlayActivity.onActivityReenter(MatchPlayActivity.kt:1123)
測試API 24