Android 错误:java.lang.RuntimeException:Parcelable在写入可序列化对象时遇到IOException

Android 错误:java.lang.RuntimeException:Parcelable在写入可序列化对象时遇到IOException,android,kotlin,viewmodel,runtimeexception,serializable,Android,Kotlin,Viewmodel,Runtimeexception,Serializable,我创建了一个ViewModel,并在不同的类中使用该ViewModel,一切正常,但每次我将应用程序置于后台时,都会出现以下错误: java.lang.RuntimeException:Parcelable在编写可序列化对象时遇到IOException(name=com.citylinemobile.viewmodels.ChartsViewModel) 我检查了关于这个主题的不同主题,但在每个主题中,解决方案都是在该类中实现可序列化接口,但我已经这样做了,仍然存在问题。这是我的ViewMode

我创建了一个ViewModel,并在不同的类中使用该ViewModel,一切正常,但每次我将应用程序置于后台时,都会出现以下错误:

java.lang.RuntimeException:Parcelable在编写可序列化对象时遇到IOException(name=com.citylinemobile.viewmodels.ChartsViewModel)

我检查了关于这个主题的不同主题,但在每个主题中,解决方案都是在该类中实现可序列化接口,但我已经这样做了,仍然存在问题。这是我的ViewModel类:

class ChartsViewModel(guid: String) : ViewModel(), Serializable {
var cashCollection: MutableLiveData<MutableList<CashCollection.CashCollectionItem>> = MutableLiveData()
var financialDetails = MutableLiveData<MutableList<FinancialDetails.FinancialDetailsItem>>()
var ticketsDetails: MutableLiveData<MutableList<TicketDetails>> = MutableLiveData()
var stats: MutableLiveData<StatsModel.Stats> = MutableLiveData()
private var chartsRepo: ChartsRepository = ChartsRepository(ChartsWebService())

init {
    cashCollection = chartsRepo.getCashCollection(guid)
    Log.i("TEST", "INIT Cash: $cashCollection")
    financialDetails = chartsRepo.getFinancialDetails(guid)
    Log.i("TEST", "INIT Financial: $financialDetails")
    ticketsDetails = chartsRepo.getTicketsDetails(guid)
    Log.i("TEST", "INIT Tickets: $ticketsDetails")
    stats = chartsRepo.getStatus(guid)
    Log.i("TEST", "INIT Status: $stats")
}

fun getCashCollectionData(guid: String): MutableLiveData<MutableList<CashCollection.CashCollectionItem>> {
    cashCollection.value?.clear()
    cashCollection = chartsRepo.getCashCollection(guid)
    Log.i("TEST", "This: " + guid + " Get CashCollection :" + cashCollection.value.toString())
    return cashCollection
}

fun getFinancialDetails(guid: String): MutableLiveData<MutableList<FinancialDetails.FinancialDetailsItem>> {
    financialDetails.value?.clear()
    financialDetails = chartsRepo.getFinancialDetails(guid)
    Log.i("TEST", "This: " + guid + " Get Financial :" + financialDetails.value.toString())
    return financialDetails
}

fun getTicketsDetails(guid: String): MutableLiveData<MutableList<TicketDetails>> {
    ticketsDetails.value?.clear()
    ticketsDetails = chartsRepo.getTicketsDetails(guid)
    Log.i("TEST", "This: " + guid + " Get Tickets :" + ticketsDetails.value.toString())
    return ticketsDetails
}

fun getStatusData(guid: String): MutableLiveData<StatsModel.Stats> {
    stats = chartsRepo.getStatus(guid)
    Log.i("TEST", "This: $guid Get Status :${stats.value.toString()}")
    return stats
}
类ChartsViewModel(guid:String):ViewModel(),可序列化{
var cashCollection:MutableLiveData=MutableLiveData()
var financialDetails=MutableLiveData()
var ticketsDetails:MutableLiveData=MutableLiveData()
var stats:MutableLiveData=MutableLiveData()
私有var chartsRepo:ChartsRepository=ChartsRepository(ChartsWebService())
初始化{
cashCollection=chartsRepo.getCashCollection(guid)
Log.i(“测试”,“初始现金:$cashCollection”)
financialDetails=chartsRepo.getFinancialDetails(guid)
Log.i(“测试”,“初始财务:$financialDetails”)
ticketsDetails=chartsRepo.getTicketsDetails(guid)
Log.i(“测试”,“初始票据:$ticketsDetails”)
stats=chartsRepo.getStatus(guid)
Log.i(“测试”,“初始状态:$stats”)
}
fun getCashCollectionData(guid:String):可变LiveData{
cashCollection.value?.clear()
cashCollection=chartsRepo.getCashCollection(guid)
Log.i(“TEST”,“This:”+guid+“Get CashCollection:”+CashCollection.value.toString())
回款
}
趣味getFinancialDetails(guid:String):可变LiveData{
financialDetails.value?.clear()
financialDetails=chartsRepo.getFinancialDetails(guid)
Log.i(“TEST”,“This:”+guid+“Get Financial:”+financialDetails.value.toString())
返回财务详细信息
}
趣味getTicketsDetails(guid:String):可变LiveData{
ticketsDetails.value?.clear()
ticketsDetails=chartsRepo.getTicketsDetails(guid)
Log.i(“测试”,“此:”+guid+“获取票证:”+ticketsDetails.value.toString())
退票详情
}
fun getStatusData(guid:字符串):MutableLiveData{
stats=chartsRepo.getStatus(guid)
Log.i(“TEST”,“This:$guid Get Status:${stats.value.toString()}”)
返回数据
}
我还使用了ViewModelFactory:

class ChartsViewModelFactory(var guid: String) : ViewModelProvider.Factory, Serializable {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
    if (modelClass.isAssignableFrom(ChartsViewModel::class.java)) {
        return ChartsViewModel(guid) as T
    } else {
        throw RuntimeException("Failed to create instance of the ${modelClass.simpleName}")
    }
}
class ChartsViewModelFactory(变量guid:String):ViewModelProvider.Factory,可序列化{
重写趣味创建(modelClass:Class):T{
if(modelClass.isAssignableFrom(ChartsViewModel::class.java)){
将ChartsViewModel(guid)返回为T
}否则{
抛出RuntimeException(“未能创建${modelClass.simpleName}的实例”)
}
}
如有任何建议,将不胜感激!谢谢