Android Fragment LiveData 移除 Observer 不起作用

4

我正在使用Jetpack Navigation进行导航。我使用ViewModel LiveData来监听表单提交。

我在片段(SignUpFragment)的onActivityCreated中观察LiveData,如下所示:

viewModel.signup.observe(viewLifecycleOwner, Observer<Resource<BaseResponse<User>>> {
        checkSignUpResponse(it)
})

当我使用navigationUp()导航到下一个片段(OtpFragment)时,注册观察器在观察器中调用检查注册响应的方法(checkSignUpResponse),并将我再次发送到otp片段。

我尝试过

viewModel.signup.removeObservers(viewLifecycleOwner)

并且

viewModel.signup.removeObserver(signUpObserver)

但是它不能正常工作。


你能展示一下signUpObserver的赋值吗? - Zain
signUpObserver只是一个带有checkSignUpResponse()方法调用的对象。我还使用了数据绑定,因此所有viewmodel实时值都会自动分配。但问题是如何防止观察者在返回导航时调用。 - b8x
你找到可能的解决方案了吗?如果是的话,能否请您分享一下?我也遇到了同样的问题。 - bhaskar
1个回答

0

我刚刚在导航时使用了isNavigatedToOtp布尔开关,检查是否isNavigatedToOtp为false,然后调用checkSignUpResponse。


但我不确定这样做是否正确,但它可以运行! - b8x

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接