我正在为我的Android应用程序使用MVVM模式。一切看起来都很好。但是,当发生网络错误时,我需要显示带有“重试”按钮的弹出消息,该按钮应再次调用该API。问题是单击“重试”按钮时,它不知道哪个API返回了该错误以重试。有人可以给我提建议吗?
/**
* Created by Nguyen on 3/27/2019.
*
* This BaseFragment will contain the common functions which can be shared in all fragments.
* All of the fragments in the app should be extended from this class
*/
abstract class BaseFragment : Fragment() {
...
protected fun registerViewModel(viewModel: BaseViewModel) {
...
viewModel.noNetworkErrorMessage().observe(this, Observer {
it.consume {
// I can add a listener here to handle when the Retry
// button is clicked
DialogHelper.showNoInternetConnectionDialog(context)
}
})
...
viewModel.timedOutMessage().observe(this, Observer {
it.consume {
DialogHelper.showAutoDismissErrorPopup(
context,
getString(R.string.error_request_time_out) {
// When the retry button is clicked
}
)
}
})
}
...
}
答案 0 :(得分:0)
如果您使用的是Retrofit
,则会从错误方法获取原始请求。因此,在您的视图模型的方法中,您可以传递url。
因此情况将是:
YourViewModel extends ViewModel{
MutableLiveData<String> url;
.....
MutableLiveData<String> timedOutMessage(){
return url;
}
}
因此,当发生网络错误或超时错误时,请发送网址以进行重试。
我想您会明白的。