【发布时间】:2021-01-16 13:16:20
【问题描述】:
我试图在fragment 中实现登录功能。以下是代码:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
MainViewModel mainViewModel = new ViewModelProvider(requireActivity()).get(MainViewModel.class);
String email = ....;
String password = ....;
SignInLiveData signInStatusObserver = mainViewModel.getSignInStatusLiveData(email, password);
signInStatusObserver.observe(getViewLifeCycleOwer(), new Observer<Boolean>{
@Override
public void onChanged(Boolean isSignedIn) {
if(isSignedIn)
Toast.makeText(requireContext(), "SignIn Successful", Toast.LENGTH_LONG).show();
else
Toast.makeText(requireContext(), "SignIn Unsuccessful", Toast.LENGTH_LONG).show();
}
}
}
它工作正常,但是当我锁定手机然后解锁时(使用屏幕上的应用程序),Toast 消息再次显示。
再次,当我锁定然后解锁设备(任意次数)时,吐司会一次又一次地显示。
为什么会这样?
如何只显示一次吐司?
【问题讨论】:
-
好像你在
onResume方法中调用了一些方法来操作实时数据值。你能添加那个片段的代码吗 -
onResume()方法中没有任何代码。
标签: android android-fragments android-livedata android-mvvm