Sam*_*Sam 1 android android-mvvm
我正在开发一个登录表单的应用程序.我对模式有点困惑,因为我不明白我将如何打开新活动,因为我的登录成功.按照我的理解,当我点击提交时按钮viewmodel中的一个方法,它将通过身份验证获得调用,在我成功登录后,我不知道如何将其导航到活动文件,以便我可以调用新活动.
拇指规则:
android.*中没有包应该位于ViewModel中.您可以忽略ViewModel的包导入
此外,您也可以使用普通的ViewModel.
如何进行?
让我们简单一点.假设您正在进行登录页面.
让我们看看ViewModel本身的内容:
所有这些都在你的ViewModel中.
现在,您的活动需要对您的Api通话结果做出反应.因此,让ViewModel有一个单独的LiveData,其中T是来自Api Call的响应类型.
例如:
val loginApiStatus = MutableLiveData<LoginResponse>()
Run Code Online (Sandbox Code Playgroud)
然后,让您的Activity观察此LiveData.应该在onStart()Activity的方法中观察到.我会告诉你为什么要观察onStart().
viewModel.loginApiStatus.observe(this, Observer{ loginResponse->
// respond accordingly
})
Run Code Online (Sandbox Code Playgroud)
现在,一旦您收到Api的回复,只需将ViewModel中的LiveData更新为:
loginApiStatus.value = loginResponse // Login Api Response
使用此结构,您可以完全控制处理Api响应.即使您的活动进入后台,在启动Api呼叫后,您仍然可以了解该Api呼叫发生的情况.现在,当您再次从后台返回登录屏幕时,您再次开始观察LiveData(因为我们正在观察onStart()前面所述的状态LiveData ),您将得到状态以作出反应.
当您开始在ViewModel本身中存储View/Fragment/Activity的状态时,生活变得容易多了.
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |