Nic*_*lle 8 android android-livedata android-viewmodel android-architecture-components
我在使用时遇到问题,ViewModel
而且LiveData
我是使用ViewModel和LiveData arch组件的新手,并且在使用fragments
和旋转屏幕时出现问题,观察者会被触发...我试图移动
viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
在所有片段生命周期方法中但没有成功.
我的场景非常简单:
login(email, password)
并设置LiveData对象的值在这一点上一切都好.但是当我旋转屏幕时,Toast再次出现而没有任何用户交互.
我是否必须在onDestroyView()中执行某些操作?
提前致谢!
好的,最后找到问题以及如何解决.LiveData不是为单个事件设计的.出于这个原因,有几种方法可以解决或处理它,这两个链接对我有用:
JoseAlcérreca的SingleLiveEvent课程
基本上:
在ViewModel中:
var eventLiveData: MutableLiveData<Event<ErrorResponse>> = MutableLiveData()
和活动或片段:
viewModel.eventLiveData.observe(this, EventObserver {
it?.let {
shortToast(it.message)
}
})
Run Code Online (Sandbox Code Playgroud)
这就是LiveData和ViewModel的工作原理.您正在获得具有相同LiveData的相同ViewModel,而LiveData具有上一个对象,例如User,在您调用时具有先前的凭据ViewModelProviders.of(this).get(MainViewModel::class.java)
.您可以重置LiveData用户onPause()
或onStop()
将其重置为初始状态.
我不知道你怎么称toast,如果你可以分享你的ViewModel和MainActivity我可以更具体.
归档时间: |
|
查看次数: |
2452 次 |
最近记录: |