我开发了一个简单的应用程序,像减法,加法。 在这个应用程序,我用三个EditTexts,一个答案,另外两个用于问题。 我想计算上的文字改变事件问题的答案。 但是,当我申请两个这样的文本改变事件的事件发生,但不能正常工作。 因为当我在问题的第一的EditText文本输入的事件发生,但它引发此异常:
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) {}
Answer 1:
我认为你正在接受空字符串" "
这是造成这个问题。 确保你从你得到一个非空字符串EditText
。
考虑你EditText
没有输入任何价值,而你试图获得其价值并转化为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
Answer 2:
我想万一的EditText型是最好的数...使用(长功能)参数,而不是(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) {
}
});
Answer 3:
我用这个和它是正确的:
public void afterTextChanged(Editable arg0) {
String inputs = input.getText().toString();
Integer index=0;
if(!inputs.equals(""))
index=Integer.valueOf(inputs);
}
Answer 4:
我认为你需要检查你的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
}
希望它的帮助。
Answer 5:
新增科特林实现以供将来参考
webUrl.editText!!.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
var urlToload: String
if (s ==null || s.isEmpty()) {
urlToload = UniversalWebViewFragment.YOUTUBE_SERACH_URL + "hd trailers"
} else {
urlToload = UniversalWebViewFragment.GOOGLE_SERACH_URL + s.toString()
}
loadURL(urlToload)
}
})
Answer 6:
我有同样的问题,这个问题是这些二项行动解决:
1 - 安卓的inputType =“textNoSuggestions”(它并没有解决本身的问题)
2 - 添加监听器:
edittext1.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
Log.e("JFT", "EDITTEXT => = "+s);
if(!s.equals("") ) {
//do your work here
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
}
});
文章来源: How to Apply the Textchange event on EditText