相关疑难解决方法(0)

实时数据被多次调用?

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)

android android-livedata

12
推荐指数
2
解决办法
3614
查看次数

屏幕旋转后,Android Arch Components ViewModel和LiveData触发器

我在使用时遇到问题,ViewModel而且LiveData我是使用ViewModel和LiveData arch组件的新手,并且在使用fragments和旋转屏幕时出现问题,观察者会被触发...我试图移动

viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java) 在所有片段生命周期方法中但没有成功.

我的场景非常简单:

  1. 登录屏幕上有电子邮件和密码
  2. 用户点击"登录"按钮
  3. viewmodel调用login(email, password)并设置LiveData对象的值
  4. 只是为了现在简单的展示吐司

在这一点上一切都好.但是当我旋转屏幕时,Toast再次出现而没有任何用户交互.

我是否必须在onDestroyView()中执行某些操作?

提前致谢!

android android-livedata android-viewmodel android-architecture-components

8
推荐指数
2
解决办法
2452
查看次数