2011-05-05 6 views
5

Hey, estoy tratando de conseguir mi ventana EDITTEXT para borrar su contenido cuando sea: 1) Se vuelve a seleccionar para introducir diferentes datos o 2) Un botón se pulsa para entrada predeterminado datosCompensación introducido previamente en el campo de texto EditarTexto

Esto no es texto de sugerencia. Por el momento, una vez que se ingresan los datos predeterminados, se quedan allí y no puedo borrarlos, incluso usando delete. He intentado poner editBox.setText ("") en OnClick Listener y addTextChangedListener (tanto antes como en métodos) usando un booleano para determinar si el código ya ha sido ingresado, pero simplemente lo ignora.

foodBox.addTextChangedListener(new TextWatcher(){ 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      addFood(); 
      valueAdded=true; 
     }   
    }); 


    dogButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if (valueAdded==true){ 
       foodBox.setText(""); 
       setFood(0.0); 
      } 
      isClicked=true; 
      animal=1; 
      addFood(); 
      valueAdded=true;//value in the box 
       } 


    }); 


    catButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if (valueAdded){ 
       foodBox.setText("");} 
      isClicked=true; 
      animal=2; 
      addFood(); 
      valueAdded=true; 
      } 

    }); 
      private void addFood() { 
    try{ 
     aClass aob = new aClass(); 
     setFood(0.0); 
     String a = this.foodBox.getText().toString(); 
     if(isClicked&&TextUtils.isEmpty(a)){ 
      if(animal==1){ 
       a=mob.getDog(); 
      } 
      if(animal==2){ 
       a=mob.getCat(); 
      } 
      this.foodBox.setText(a); 
      double d=Double.parseDouble(a); 
      setFood(d); 
     }else{ 
      if(TextUtils.isEmpty(a)){ 
      a="0"; 
     } 
     double d=Double.parseDouble(a); 
     setFood(d); 
     } 
    } 
     catch (Exception e){ 
     this.showAnswer.setText("Please input animals in numbers"); 
     addFood(); 
    } 
} 

Gracias

Respuesta

7

Errr ...

El único código que utilizo para lograr 1) es:

// Clear text when clicked 
    host.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      host.setText(""); 
     } 
    }); 

host ser sólo un EditarTexto. Funciona bien? Creo que estás haciendo esto más complicado de lo que es.

+0

es muy extraño. ¿Podría ser algo relacionado con el código en el método addFood? – Broo

+0

No usaría el oyente TextChanged, especialmente no así. La variable valueAdded que tiene parece realmente tonta, en su lugar debe verificar algo como 'foodBox.getText(). Length()' para asegurarse de que haya datos dentro del campo EditText. Repensa tu diseño. – Klaus

+0

Deshágase de "isClicked" también ... – Klaus

3

Para borrar Cuando se hace clic en el botón Borrar:

firstName = (EditText) findViewById(R.id.firstName); 

clear = (Button) findViewById(R.id.clearsearchSubmit); 

clear.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (v.getId() == R.id.clearsearchSubmit); 
     firstName.setText(""); 
    } 
}); 

que trabajó para mí. Espero eso ayude.

0

Para 1) onClick no funcionó, ya que tuve que presionar dos veces para llamar aClickListener. Otro enfoque sería setOnFocusChangeListener()

editTextView.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if(hasFocus){ 
        editTextView.getText().clear(); 
       } 
      } 
     }); 

Para 2) solución dada por ashim888 funciona bien.

Cuestiones relacionadas