android - 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);
两种方法都试过了,结果一样
解决方案
推荐阅读
- python - 如何从带有模式的格式化字符串中提取子字符串?
- excel - 如何在特定列中始终将单元格格式设置为负数?
- here-api - api 响应中有关 Confidence Level 和 Linked Id 的查询
- android - 用户在 Edittext 中的每次更改都访问数据库是一种真正的做法吗?
- javascript - 尝试控制台登录 foreach 回调函数
- jwt - 如何验证 Microsoft jwt id_token?
- mongodb - 我想删除 mongoDB 文档中的特殊字符
- python-3.x - 为什么这个 CVXPY 表达式不是 DCP?
- service-worker - Angular 8 PWA 服务工作者 - API 调用在主页中有效,但在其他页面中无效
- azure-blob-storage - IE 中的 Azure 认知服务(文本到语音)和音频问题(源无效)