我Android Architecture Components在我的应用程序中使用.在我的登录Activty中,我在登录失败时显示对话框!
由于实时数据,对话框已显示超过3次.我添加了一些日志并发现它livedata被多次调用.
我该如何解决这个问题?
活动
mViewModel.authenticate(token, binding.inputPassword.getText().toString()).observe(LoginActivity.this, apiResponse -> {
progress.dismiss();
if (apiResponse != null) {
if (apiResponse.getError() != null) {
Log.e("Login", "Network Failure");
} else {
if (apiResponse.getAuthuser().getStatus().equals("VALID")) {
PrefUtils.saveUserToPrefs(LoginActivity.this, apiResponse.getAuthuser());
finish();
} else if (apiResponse.getAuthuser().getStatus().equals("INVALID")) {
Log.e("LOGIN Issue ", "Showing Dialog" + apiResponse.getAuthuser().getStatus());
loginFailure();
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
视图模型
class LoginActivityViewModel extends ViewModel {
private final FarmerRepository farmerRepository;
private MediatorLiveData<ApiResponse> mApiResponse;
LoginActivityViewModel(FarmerRepository repository) {
mApiResponse = new MediatorLiveData<>();
farmerRepository = repository;
}
MediatorLiveData<ApiResponse> …Run Code Online (Sandbox Code Playgroud) 我在使用时遇到问题,ViewModel而且LiveData我是使用ViewModel和LiveData arch组件的新手,并且在使用fragments和旋转屏幕时出现问题,观察者会被触发...我试图移动
viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
在所有片段生命周期方法中但没有成功.
我的场景非常简单:
login(email, password)并设置LiveData对象的值在这一点上一切都好.但是当我旋转屏幕时,Toast再次出现而没有任何用户交互.
我是否必须在onDestroyView()中执行某些操作?
提前致谢!
android android-livedata android-viewmodel android-architecture-components