首页 > 解决方案 > ViewModel:回调 onChanged - 在整数 19 之后不显示更改的值,直到值回落到 19 以下

问题描述

我有一个应该显示温度的活动,它会显示温度,最高可达 19(摄氏度)。一旦数量超过 19,则没有更新。我放了一个 log.i 跟踪,我可以看到值正在更新到 LiveData,但是 onChange 在 19 之后停止捕获更改,并且 Log.i 也没有记录输出。19是神奇数字的原因,但更重要的是我将如何纠正这个问题?我尝试使用数字字段但得到相同的结果。该字段位于 activity_main.xml 中,是一个 EditText 我的 Android 经验有限。先感谢您。

MainViewModel mainViewModel;
private TextView editText;

    mainViewModel = new ViewModelProvider(this).get(MainViewModel.class);
    mainViewModel.getText().observe(this, new Observer<CharSequence>() {
        @Override
        public void onChanged(CharSequence charSequence) {
            editText.setText(charSequence);
            Log.i(DBGTAG, "TEMPER" + charSequence);
        }
    });

MainViewModel.java

public class MainViewModel extends ViewModel {
private final MutableLiveData<CharSequence> text = new MutableLiveData<>();

public void setText(CharSequence input){
    text.setValue(input);
}
public MutableLiveData<CharSequence> getText(CharSequence input){
    return text;
}
public LiveData<CharSequence> getText(){
    return text;
}
}

更新 LiveData 的位置

 UserDynamics.txTemperature = temperatureValue;                                      
 editText.setText(temperatureValue);
 mainViewModel.setText(temperatureValue);

两种方法都试过了,结果一样

标签: androidcallbackviewmodelandroid-livedata

解决方案


推荐阅读