我正在使用导航底部与导航底部ViewModel内的所有片段共享,但它在第二次调用片段时抛出此异常
java.lang.IllegalArgumentException: Cannot add the same observer with different lifecycles
我试图让所有观察者都附加到活动而不是它的片段,如下所示
1-在fragemt中声明viewModel
viewModel = activity?.run {
ViewModelProviders.of(this,viewModelFactory).get(SharedViewModel::class.java)
} ?: throw Exception("Invalid Activity")
Run Code Online (Sandbox Code Playgroud)
2-观察者实时数据对象
viewModel.msg.observe(activity!!, Observer {
Log.i(TAG,it)
})
Run Code Online (Sandbox Code Playgroud)
3- 移除观察者
override fun onStop() {
super.onStop()
viewModel.msg.removeObservers(activity!!)
}
Run Code Online (Sandbox Code Playgroud)
这段代码对我来说工作正常,但我想知道我的代码是否正确并且可能工作?提前致谢