gpt4 book ai didi

java - Android:MVVM 是否可以显示来自 ViewModel 的消息(toast/snackbar 等)

转载 作者:行者123 更新时间:2023-12-04 05:31:05 25 4
gpt4 key购买 nike

我想知道在 ViewModel 的 View 中显示某种消息的最佳方法是什么。我的 ViewModel 正在进行 POST 调用,并且“onResult”我想向用户弹出一条包含特定消息的消息。

这是我的 View 模型:

public class RegisterViewModel extends ViewModel implements Observable {
.
.
.
public void registerUser(PostUserRegDao postUserRegDao) {

repository.executeRegistration(postUserRegDao).enqueue(new Callback<RegistratedUserDTO>() {
@Override
public void onResponse(Call<RegistratedUserDTO> call, Response<RegistratedUserDTO> response) {
RegistratedUserDTO registratedUserDTO = response.body();
/// here I want to set the message and send it to the Activity

if (registratedUserDTO.getRegisterUserResultDTO().getError() != null) {

}
}

});
}

还有我的 Activity :
public class RegisterActivity extends BaseActivity {   

@Override
protected int layoutRes() {
return R.layout.activity_register;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
AndroidInjection.inject(this);
super.onCreate(savedInstanceState);

ActivityRegisterBinding binding = DataBindingUtil.setContentView(this, layoutRes());
binding.setViewModel(mRegisterViewModel);
}

在这种情况下,最好的方法是什么?

最佳答案

使用 在 View 模型( Activity/fragment )中显示 Toast/snackbar 消息实时数据 .
步:

  • 将 LiveData 添加到您的 View 模型中
  • View 只是观察 LiveData 和更新 View 相关任务

  • 例如:
    在 View 模型中:
    var status = MutableLiveData<Boolean?>()
    //In your network successfull response
    status.value = true
    在您的 Activity 或 fragment 中:
    yourViewModelObject.status.observe(this, Observer { status ->
    status?.let {
    //Reset status value at first to prevent multitriggering
    //and to be available to trigger action again
    yourViewModelObject.status.value = null
    //Display Toast or snackbar
    }
    })

    关于java - Android:MVVM 是否可以显示来自 ViewModel 的消息(toast/snackbar 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53484781/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com