如何在EditText上应用Textchange事件

我开发了一个简单的应用程序,如减法,加法。 在这个应用程序中,我使用了三个EditTexts,一个用于回答,另外两个用于提问。 我想计算关于文本更改事件的问题的答案。 但是,当我应用这个事件发生的文本更改事件,但没有正常工作。 因为当我在第一个问题的EditText文本中input事件发生,但它引发此exception:

07-03 16:39:48.844: E/EduApp Log :=>(12537): Error In Text change Event java.lang.NumberFormatException: unable to parse '' as integer 

我该怎么办? 我使用TextWatcher进行文本更改事件。

 txtOne.addTextChangedListener(this); txtTwo.addTextChangedListener(this); public void afterTextChanged(Editable s) {} public void beforeTextChanged(CharSequence s, int start, int count, int after) {} public void onTextChanged(CharSequence s, int start, int before, int count) {} 

Solutions Collecting From Web of "如何在EditText上应用Textchange事件"

我认为你正在收到空string" "这是造成这个问题。 确保你从Edittext中获得一个非空string。

考虑一下你的Edittext没有任何input值,而你正试图获得它的值并将其转换为int,你将遇到这种问题。

  edittext.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { if(!s.equals("") ) { //do your work here } } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void afterTextChanged(Editable s) { } }); 

另外检查这个链接更多的想法,

https://stackoverflow.com/a/3377648/603744

我用这个,这是正确的:

 public void afterTextChanged(Editable arg0) { String inputs = input.getText().toString(); Integer index=0; if(!inputs.equals("")) index=Integer.valueOf(inputs); } 

我认为最好的情况下edittexttypes是数字…使用(长度函数)的参数,而不是(equle()函数)例如:

 edittext.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() > 0) { //do your work here } } } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void afterTextChanged(Editable s) { } }); 

我认为你需要检查你的editText值是否为空或不先。 像这样的东西:

 String textValue; textValue = edittext().getText().toString()); Log.v("","Value is " + textValue); if(textValue != ""){ // Call Text Change Listener Here }else{ // Throw error message or something } 

希望这是帮助。