web-dev-qa-db-ja.com

EditTextにTextchangeイベントを適用する方法

減算、加算などの簡単なアプリを1つ開発しました。このアプリでは、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) {}  
26
Zala Janaksinh

この問題を引き起こしている空の文字列" "を受け取っていると思います。 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

44
Andro Selva

編集テキストのタイプが数値の場合に最適だと思います...(equle()関数)の代わりにパラメーターの(長さ関数)を使用しますex:

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

    }
});
2
user6757534

私はこれを使用しましたが、正しいです:

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

}
1
Omid

まず、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
}

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

0
myo htet aung

私は同じ問題を抱えていて、これらの2つのアクションで問題は解決しました。
1-Android: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) {

            }
        });
0
AndroidHV

将来の参照用にKotlin実装を追加

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

        })
0
Hitesh Sahu