2013-11-03 32 views
0

我的代码:。机器人的getText()的toString()等于( “0”)不工作

if (edittext1.getText().toString().equals("0")) 
    edittext1.setFilters(new InputFilter[] {new InputFilter.LengthFilter(1)}); 

在.xml文件中我设置android:inputType="numberDecimal"我想,如果用户在edittext1的开头写道: “0”,比他不能再写什么。

它不工作,如何解决它?

+0

你肯定edittext1.getText()不返回null? – Aubin

+0

@Aubin如果是,那么OP会得到一个NPE。罗斯,“不起作用”是什么意思? – Simon

+0

您是否尝试在if块内记录消息?也许你在if语句中的表达是正确的,但setFilters不会触发。也许。只是一个想法。 – Swayam

回答

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){} 
    }); 
+0

也许我做错了什么,但它不起作用。 – ross

+0

我修正了上面的代码,请尝试一下。我在模拟器中尝试过它,它工作得很好。 – user2436850