How to Apply the Textchange event on EditText

前端 未结 7 1257
感动是毒
感动是毒 2020-12-13 13:38

I developed one simple app, like subtraction, addition. In this app I use three EditTexts, one for answer and other two for question. I want to calculate the answer of quest

相关标签:
7条回答
  • 2020-12-13 14:13

    I think you are receiving empty String " " which is causing this problem. Make sure you get a non-empty String from your EditText.

    Consider your EditText doesn't have any value typed in, and you are trying to get its value and convert into int you will run into this kind of problem.

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

    Also check this link for more idea,

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

    0 讨论(0)
  • 2020-12-13 14:15

    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);
    
    }
    
    0 讨论(0)
  • 2020-12-13 14:19

    For Kotlin use this below code

    edit1.addTextChangedListener(object : TextWatcher {
       override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
           if (edit1.text.toString().length == 1) {
                 edit2.requestFocus()
           }
       }
    
       override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int
       ) {// TODO Auto-generated method stub
       }
    
       override fun afterTextChanged(s: Editable) {}
    })
    
    0 讨论(0)
  • 2020-12-13 14:20

    I think you need to check your editText value is empty or not first. Something like this:

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

    Hope it's help.

    0 讨论(0)
  • 2020-12-13 14:22

    i think the best in case the edittext type is number... use the (length function) of parameter instead of (equle() function) 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) {
    
        }
    });
    
    0 讨论(0)
  • 2020-12-13 14:26

    Added Kotlin implementation for future reference

     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 讨论(0)
提交回复
热议问题