Получение редактирования текстового значения без нажатия какой-либо клавиши в Android?

Мое требование заключается в следующем: мне нужно получить данные из нескольких текстовых полей (EditText), и мне нужно рассчитать и показать их в другом EditText. Как это возможно? Как я уже упоминал, нет кнопки для автоматического нажатия, она должна появиться в общем поле.

Я упомянул это, но после цикла я m не получая значение, я объявил переменную глобально, но также не получил значение текстового поля.

EditText et1, et2, etTot;
int x, y, tot;
et1 = (EditText) findViewbyId(R.id.edittext1);
et2 = (EditText) findViewbyId(R.id.edittext2);
etTot = (EditText) findViewbyId(R.id.edittextTot);

et1.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before,
                              int count) {
        x = Integer.parseInt(et1.getText().toString().trim());
        System.out
                .println("AMOUNT IS " + et1.getText().toString());

    }

    public void beforeTextChanged(CharSequence s, int start, int count,
                                  int after) {

    }

    public void afterTextChanged(Editable s) {

    }
});

//same as for et2......

tot = x + y;

etTot.setText(tot.toString());

person Harish    schedule 06.06.2012    source источник
comment
выложи свой код, проблем быть не должно   -  person 2red13    schedule 06.06.2012
comment
@ Dheeresh Singh не получает значения вне блока для добавления этих значений x и y.   -  person Harish    schedule 06.06.2012
comment
зачем нужно снаружи? см. ответ ...... даже снаружи, как вы получите событие для обновления?   -  person Dheeresh Singh    schedule 06.06.2012


Ответы (2)


Вы можете использовать класс, реализующий TextWatcher, и переопределить следующие методы:

    @Override
        public void afterTextChanged(final Editable editable) {
            // check if user has filled some value in all editTexts
        }


        @Override
        public void beforeTextChanged(final CharSequence string,
                final int start, final int count, final int after) {
        }


        @Override
        public void onTextChanged(final CharSequence string, final int start,
                final int before, final int count) {
        }

Используйте приведенный выше код для последнего editText и проверьте, содержат ли все editTexts какое-либо значение, т.е. они не имеют значения как "" или null. если да, то извлеките весь текст из этих editTexts и рассчитайте, что вы хотите.

person Shrikant Ballal    schedule 06.06.2012

person    schedule
comment
не получаю информацию, когда я ввожу значения в текстовое поле, приложение падает - person Harish; 06.06.2012
comment
при вводе значений выбрасываются следующие исключения - person Harish; 06.06.2012
comment
06-06 14:31:17.651: E/AndroidRuntime(1563): НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: main 06-06 14:31:17.651: E/AndroidRuntime(1563): java.lang.NullPointerException 06-06 14:31:17.651: E/AndroidRuntime(1563): в in.pack.operations.expenses.ReportExpenses.updateValue(ReportExpenses.java:532) 06-06 14:31:17.651: E/AndroidRuntime(1563): в in.pack.operations.expenses .ReportExpenses.access$7(ReportExpenses.java:524) 06-06 14:31:17.651: E/AndroidRuntime(1563): в in.pack.operations.expenses.ReportExpenses$7.onTextChanged(ReportExpenses.java:238)06- 06 - person Harish; 06.06.2012
comment
NullPointerException очень предсказуем. :) - person Dheeresh Singh; 06.06.2012
comment
можете ли вы сказать мне, что является строкой 532 файла ReportExpenses.java - person Dheeresh Singh; 06.06.2012
comment
etTot.setText(tot.toString()); это линия того 532. - person Harish; 06.06.2012
comment
Итак, либо etTot не инициирован в onCreate, либо идентификатор R.id.edittextTot не существует в текущем макете экрана ........ - person Dheeresh Singh; 06.06.2012
comment
id был указан в макете, и он также инициируется в oncreate(). В макете он также был создан - person Harish; 06.06.2012
comment
if(null!=etTot) в этом перед вычислением, как всегда etTot имеет значение null - person Harish; 06.06.2012
comment
if(null!=etTot) перед вычислением? не получил ? - person Dheeresh Singh; 06.06.2012
comment
tot = x+y;if(null!=etTot)etTot.setText(tot+);else Toast.makeText(this,etTot is null ,Toast.LENGHT_SHORT).show();} в этом etTot равно null, поэтому он будет в противном случае все в порядке. Если вы заметили исключение, это исключение нулевого указателя, это была еще одна проблема... - person Harish; 06.06.2012
comment
да... вот почему я говорю, что etTot равен нулю ..... почему он равен нулю? Я уже говорил о возможных причинах...... здесь проблема только в этом... - person Dheeresh Singh; 06.06.2012
comment
Как вы сказали, все правильно, но когда я ввожу значения в текстовые поля, все работает нормально, но когда дело доходит до условия if, оно возвращает false, поэтому оно переходит в блок else здесь, он печатает тост. при вводе значение в текстовых полях. - person Harish; 06.06.2012
comment
я не дал его, как вы заметили, у меня не так много очков, чтобы дать вам -1. - person Harish; 06.06.2012
comment
etTot имеет значение null должно быть связано либо с тем, что etTot не инициирован в onCreate, либо с идентификатором R.id.edittextTot, который не существует на текущем экране... поэтому, пожалуйста, предоставьте полное действие и XMl этого, чтобы получить решение... - person Dheeresh Singh; 06.06.2012
comment
Спасибо, до сих пор код не обновлялся, теперь он был обновлен, хотя я обновил его сейчас, я перезапускал eclipse несколько раз, поэтому теперь код обновился и получил результат. Спасибо за поддержку. Отличное сотрудничество. Я принимаю ваш ответ. Еще раз БОЛЬШОЕ СПАСИБО. - person Harish; 06.06.2012