2010-05-15 5 views
11

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

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

ответ

19

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

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

    Для этого вы можете использовать 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(); 
    } 
}); 

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