今天做个需求是用户输入0-100的edittext,测试的时候发现用户可能会输出 010 001这样的数字 于是想做限制。故写出了这段代码
if (et_integral_set11.getText().toString().isEmpty()==false){ if (Integer.valueOf(et_integral_set11.getText().toString()).intValue()>100){ et_integral_set11.setText(String.valueOf(100)); et_integral_set11.setSelection(et_integral_set11.getText().length()); }else{ et_integral_set11.setText(String.valueOf(Integer.valueOf(et_integral_set11.getText().toString()))); et_integral_set11.setSelection(et_integral_set11.getText().length()); } }
但是在我的手机(华为荣耀8)上点击软键盘X键时会直接卡住。感觉应该是UI线程堵塞了。杀掉APP后软键盘还是会卡的界面上几分钟才会退出....
改了几下之后发现可能是由于代码设置文本也会触发监听所以进入了死循环。
后面更改为
if (Integer.valueOf(et_integral_set11.getText().toString()).intValue()>100){ et_integral_set11.setText(String.valueOf(100)); et_integral_set11.setSelection(et_integral_set11.getText().length()); } if (et_integral_set11.getText().length()>1&&et_integral_set11.getText().charAt(0)=='0'){ et_integral_set11.setText(String.valueOf(Integer.valueOf(et_integral_set11.getText().toString()))); et_integral_set11.setSelection(et_integral_set11.getText().length()); }就没有问题了