Пример кода onFocusChange? - PullRequest
       7

Пример кода onFocusChange?

11 голосов
/ 16 мая 2010

У меня есть форма с 2 полями, в которые вы можете ввести месяцы или годы. Как настроить форму таким образом, чтобы при вводе в годах поле для редактирования текста по месяцам автоматически рассчитывалось и вводилось в собственное поле. Точно так же я хочу, чтобы рассчитывались годы, если вы ввели месяцы

Может кто-нибудь дать мне пример кода для этого?

1 Ответ

19 голосов
/ 16 мая 2010

У вас есть два способа сделать это:

  1. Выполнить посимвольную обработку одного поля для вычисления другого поля

    Для этого вы можете использовать addTextChangedListener с наблюдателем текста, где вы изменяете метод onTextChanged для обработки данных.

    //from editHandle = (EditText) findViewById(R.id. <<your EditText>> );
    
    editHandle.addTextChangedListener(redoWatcher);
    
    // listener
    private TextWatcher redoWatcher = new TextWatcher() {
    
    
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }
    
        @Override   
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            recalculate();
        }
    
        @Override
        public void afterTextChanged(Editable s) {
    
        }
    
    };
    

Теперь вы можете написать метод пересчета для обработки данных.

2. Другой метод заключается в вычислении данных, когда пользователь меняет фокус на другое поле.

Здесь вам нужно использовать onFocusChangeListener:

<Your EditView>.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        recalculate();
    }
});

В любом случае, в зависимости от конструкции вы можете проверить правильность ввода.

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