29

引き算、足し算などの簡単なアプリを開発しました。このアプリでは、3 つの EditText を使用します。1 つは回答用、もう 2 つは質問用です。テキスト変更イベントで質問の答えを計算したい。しかし、この両方にテキスト変更イベントを適用すると、イベントは発生しますが、正しく機能しません。質問の最初の 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) {}  
4

7 に答える 7

51

" "この問題を引き起こしている空の文字列を受け取っていると思います。から空でない文字列を取得するようにしてください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

于 2012-07-03T11:13:32.397 に答える
2

edittextタイプが数値の場合に最適だと思います...(equal()関数)の代わりに(長さ関数)のパラメーターを使用します例:

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) {

    }
});
于 2016-12-29T12:01:25.753 に答える
1

I used this and it's correct:

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

}
于 2013-01-20T13:55:24.450 に答える
0

最初に 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
}

それが助けになることを願っています。

于 2012-07-03T12:01:42.870 に答える