EditText的setText()方法无效解决方法

  • 解决方法:
  • view.setSaveEnabled(false);
  • 原因:
  • 安卓会自动保存某些view的状态,旋转屏幕或打开一个活动后,onSaveInstanceState会保存了EditText的内容,然后在onCreate的时候把EditText设置成功了,但是随后会在->onRestoreInstanceState尝试恢复之前的值,所以造成了值没改变。saveEnabled设为false就不会恢复这个EditText的值。
您可以使用 Android 的 EditText 组件来输入数字,并设置输入类型为 "numberDecimal"。然后,在您的代码中,您可以使用 DecimalFormat 类来格式化输入,并确保它只显示两位小数。以下是一个简单的例子: 1. 在布局文件中设置 EditText 组件: ```xml <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="numberDecimal" /> ``` 2. 在您的代码中获取 EditText 组件并设置格式化方式: ```java EditText editText = findViewById(R.id.editText); DecimalFormat decimalFormat = new DecimalFormat("#.##"); editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // do nothing } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // do nothing } @Override public void afterTextChanged(Editable s) { try { String input = s.toString(); if (!input.isEmpty()) { double value = Double.parseDouble(input); String formatted = decimalFormat.format(value); if (!input.equals(formatted)) { editText.setText(formatted); editText.setSelection(formatted.length()); } } } catch (NumberFormatException e) { // handle error } } }); ``` 此代码将监视 EditText 中的文本更改,并在用户输入后使用 DecimalFormat 将其格式化为两位小数。如果用户输入了无效的数字,则会捕获 NumberFormatException 异常并进行错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值