2010-05-15 27 views
11

Tengo un formulario con 2 campos donde puede ingresar en meses o años. ¿Cómo configuro el formulario para que, si ingresa los años, el campo de texto de edición de meses se calcule automáticamente y se ingrese en su propia casilla. Del mismo modo, quiero que los años se calculen si ingresó en los mesesonFocusChange ejemplo de código?

¿Alguien me puede dar un código de muestra para esto?

Respuesta

19

tienes dos maneras de hacer esto:

  1. hacer en carácter de proceso de caracteres de un campo para calcular el otro campo

    Para ello se puede utilizar el addTextChangedListener con un vigilante de texto en el que se cambia el método onTextChanged para procesar los datos.

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

Ahora usted puede escribir el método de recálculo para procesar los datos.

2. El otro método es calcular los datos cuando el usuario cambia el foco al otro campo.

Aquí es necesario utilizar el onFocusChangeListener:

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

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

De cualquier manera, dependiendo del diseño es posible que desee comprobar si hay una entrada válida.

Cuestiones relacionadas