android getText().toString().equals(";0";)不';行不通

android getText().toString().equals(";0";)不';行不通,android,Android,我的代码: if (edittext1.getText().toString().equals("0")) edittext1.setFilters(new InputFilter[] {new InputFilter.LengthFilter(1)}); 在.xml文件中,我设置了android:inputType=“numberDecimal”如果用户在edittext1“0”的开头写入内容,那么他就不能再写入任何内容了 它不起作用了,怎么修复 确保每次输入更改时都进行此检查,而不是

我的代码:

if (edittext1.getText().toString().equals("0"))
   edittext1.setFilters(new InputFilter[] {new InputFilter.LengthFilter(1)});
在.xml文件中,我设置了
android:inputType=“numberDecimal”
如果用户在edittext1“0”的开头写入内容,那么他就不能再写入任何内容了


它不起作用了,怎么修复

确保每次输入更改时都进行此检查,而不是仅更改一次:

    edittext1.addTextChangedListener(new TextWatcher(){
        public void afterTextChanged(Editable s) {
               if (edittext1.getText().toString().equals("0")){
                    edittext1.setFilters(new InputFilter[] {new InputFilter.LengthFilter(1)});
                }else{
                    edittext1.setFilters(new InputFilter[0]); // remove filter
                }
        }
        public void beforeTextChanged(CharSequence s, int start, int count, int after){}
        public void onTextChanged(CharSequence s, int start, int before, int count){}
    }); 

您确定edittext1.getText()没有返回null吗?@Aubin如果返回null,则OP将获得NPE。Ross,“它不工作”是什么意思?你有没有尝试在if块中记录消息?也许if语句中的表达式是正确的,但是setFilters没有启动。大概只是一个想法。@Simon“它不工作”的意思是,我可以写“00”,“01”等等。我想阻止它。我想允许输入像“201”、“30”、“0”这样的数字,而不是“00”、“01”。斯韦厄姆,我没有试过,因为我不知道怎么做。我修复了上面的代码,请再试一次。我在模拟器上试过,效果很好。