Заполните текст виджета EditText из другого текста виджета EditText - PullRequest
1 голос
/ 06 января 2010

Я пытаюсь заполнить текст второго виджета EditText текстом из первого виджета EditText только тогда, когда второй виджет EditText получает фокус, второй виджет не пуст и первый виджет не пуст.

У меня есть следующий код обработчика OnFocusChangeListener.

        public void onFocusChange(View v, boolean hasFocus) {

        EditText stxt = (EditText) findViewById(R.id.numberone);
        EditText etxt = (EditText) findViewById(R.id.numbertwo);


        if (hasFocus && stxt.getText().toString().trim() != "" && etxt.getText ().toString().trim() == "")
        {
            etxt.setText(stxt.getText().toString().trim());
        }
    }

Когда я запускаю его и щелкаю во втором виджете, он не заполняется. Когда я удаляю третье ограничение ('etxt.getText () .toString (). Trim () == ""')), оно работает. поэтому getText () во втором виджете EditText возвращает что-то, даже если второй виджет не имеет начального значения, кроме текста, который отображается через атрибут подсказки.

Как мне это сделать.

Спасибо

Ответы [ 2 ]

2 голосов
/ 06 января 2010

Вы должны делать сравнение объектов, используя String.equals(), а не просто x == "".

Я бы переписал это, используя удобный Android TextUtils класс:

String one = stxt.getText().toString();
String two = etxt.getText().toString();

if (hasFocus && TextUtils.getTrimmedLength(one) != 0 
      && TextUtils.getTrimmedLength(two) == 0) {
    etxt.setText(one);
}
1 голос
/ 06 января 2010

Никогда не сравнивайте строки в Java с == или !=. Используйте equals(). Попробуйте и посмотрите, получите ли вы лучшие результаты.

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