EditText addTextChangedListener не работает должным образом - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть два ввода EditText, когда текст изменяется после вычисления, я должен отобразить результат в textView в той же деятельности.addTextChangedListener не работает для меня

Activity.java code:
width.addTextChangedListener(new TextWatcher() {
        public void beforeTextChanged(CharSequence s, int start, int count,
                                      int after) {
        }

        public void afterTextChanged(Editable s) {

        }

        public void onTextChanged(CharSequence s, int start, int before,
                                  int count) {
            if(!s.equals("") ) {
                TextView perimeterdetails = (TextView) findViewById(R.id.perimeterdetails);
                perimeterdetails.setText(s);
            }
        }
    });

XML-код:

<EditText
    android:id="@+id/width"
    android:layout_width="0dp"
    android:background="@drawable/edittextbackground"
    android:layout_weight="1"
    android:inputType="numberDecimal"
    android:layout_height="wrap_content"/>
<TextView
    android:id="@+id/perimeterdetails"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="TextView" />

Ответы [ 6 ]

0 голосов
/ 04 декабря 2018

Попробуйте это :)

TextView perimeterdetails = (TextView) findViewById(R.id.perimeterdetails);
        width.addTextChangedListener(new TextWatcher() {
                public void beforeTextChanged(CharSequence s, int start, int count,
                                              int after) {
                }

                public void afterTextChanged(Editable s) {

                }

                public void onTextChanged(CharSequence s, int start, int before,
                                          int count) {
                    if(s.length() <= 0) {

                        perimeterdetails.setText(s);
                    }
                }

});

0 голосов
/ 01 декабря 2018

не находят ViewById внутри при Textaged.Сделайте это перед добавлением textchangelistener.в onTextChange используйте

 if(!TextUtils.isEmpty(s)){
perimeterdetails.setText(s);
}
0 голосов
/ 01 декабря 2018

Попробуйте

Измените условие:

if (! S.equals ("")) {}

на

if (s).length ()! = 0) {}

0 голосов
/ 01 декабря 2018

измените свой код, как показано ниже. Определите это в onCreate

TextView perimeterdetails = (TextView) findViewById(R.id.perimeterdetails);

и сравните вашу строку, как показано ниже в onTextChanged

if(!TextUtils.isEmpty(s.toString())) {
                perimeterdetails.setText(s);
            }
0 голосов
/ 01 декабря 2018

Попробуйте это

  TextView perimeterdetails = (TextView) findViewById(R.id.perimeterdetails);

    width.addTextChangedListener(new TextWatcher() {
        public void beforeTextChanged(CharSequence s, int start, int count,
                                      int after) {
        }

        public void afterTextChanged(Editable s) {

        }

        public void onTextChanged(CharSequence s, int start, int before,
                                  int count) {
            if(!s.equals("") ) {

                perimeterdetails.setText(s);
            }
        }
    });
0 голосов
/ 01 декабря 2018

Потому что вы определяете текстовое представление в onTextChanged

вырезать эту строку TextView perimeterdetails = (TextView) findViewById(R.id.perimeterdetails);

перед addTextChangedListener

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...