【发布时间】:2020-02-19 07:56:18
【问题描述】:
我想将一些数据发布到网络服务并获得结果。这是我的代码:
fab.setOnClickListener {
viewModel.newBimeGozar(name)
.observe(this@BimeGozarAct, Observer {
dialogbimegozarNew?.hidePg()
})
}
这是我的视图模型:
class BimeNewViewModel:ViewModel() {
private val repository=BimeNewRepository()
fun newBimeGozar(name: String): MutableLiveData<StatModel> {
return repository.newBimeGozar(name)
}
这是我的仓库:
fun newBimeShode(
name: String
): MutableLiveData<StatModel> {
scope.launch {
val request = api.newBimeShode(name)
withContext(Dispatchers.Main) {
try {
val response = request.await()
regBimeshodeLiveData.value = response
} catch (e: HttpException) {
Log.v("this", e.message);
} catch (e: Throwable) {
Log.v("this", e.message);
}
}
}
return regBimeshodeLiveData;
}
它工作正常,但有一个问题。我认为观察者继续运行,如果结果的答案是错误并且用户再次按下 fab 按钮,它会创建一个新的观察者,然后返回两个值,第一个值是第一次运行,第二个值是第二次运行
我该如何解决这个问题?提交表格的正确方法是什么?
【问题讨论】:
-
我认为最好的解决方案是
disable第一次提交后的按钮。
标签: android kotlin android-lifecycle android-livedata android-mvvm