我的片段中有以下代码,订阅了ViewModel的LiveData事件。
viewModel.successfullyAddedEvent.observeEvent(this){
result.successfullyAddedEvent.postValue(Event(it))
findNavController().navigateUp()
}
viewModel.successfullyEditedEvent.observeEvent(this){
result.successfullyEditedEvent.postValue(Event(it))
findNavController().navigateUp()
}
viewModel.exitRequestedEvent.observeEvent(this){
when(it){
ExitReason.GetDetailsFailed -> {
Toast.makeText(context, R.string.details_load_error, LENGTH_SHORT).show()
}
ExitReason.UserCanceled -> { }
}
findNavController().navigateUp()
}
我在这段代码中有三个地方要打电话
navigateUp
我想把导航统一一下。
似乎发出
ExitRequestedEvent
从每个案例(成功添加、成功编辑、错误案例、用户取消)中删除对
导航
从那些事件中,但我不确定收到订单的保证。也就是说,如果我发布
successfullyAddedEvent
然后一个
exitRequestedEvent
在我的视图模型中,如下所示:
// yay my thing happened successfully, emit events
successfullyAddedEvent.postValue(Event(contentAdded))
exitRequestedEvent.postValue(Event(ExitReason.AddSuccessful))
我能保证在退出这个片段之前,我会处理添加事件(它将结果设置在共享结果视图模型上),这样调用片段总是有结果吗?