2010-05-15 14 views
11

Mam formularz z 2 polami, w których można wprowadzić w miesiącach lub latach. Jak skonfigurować formularz, aby po wprowadzeniu liczby miesięcy pole edittext miesięcy zostanie automatycznie obliczone i wprowadzone do jego własnego okna. Podobnie, chcę, aby te lata były obliczane, jeśli wprowadziłeś w miesiącachprzykład kodu onFocusChange?

Czy ktoś może mi podać przykładowy kod dla tego?

Odpowiedz

19

Istnieją dwa sposoby, aby to zrobić:

  1. uwagi charakter poprzez przetwarzanie znaków z jednego pola do obliczenia drugim polu

    W tym celu można użyć addTextChangedListener ze strażnika tekstowym, w którym zmiany metoda onTextChanged do przetwarzania danych.

    //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) { 
    
        } 
    
    }; 
    

Teraz można napisać metodę Przelicz na przetwarzanie danych.

2. Inną metodą jest obliczenie danych, gdy użytkownik zmienia fokus na inne pole.

Tu trzeba użyć onFocusChangeListener:

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

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

Tak czy inaczej, w zależności od konstrukcji może chcesz sprawdzić ważnego wejścia.