2011-12-27 10 views
5

Tengo el siguiente código que quiero usar para asegurarme de que mi texto de edición no estará vacío. Así que si el primer dibujado 0 (cero) se retira debe revertir a 0 cuando el foco cambia, aquí está la aplicación hasta ahora: métodoEvite que el texto de edición esté vacío

package your.test.two; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 

public class TesttwoActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     EditText edtxt = (EditText)findViewById(R.id.editText1); 
     // if I don't add the following the app crashes (obviously): 
     edtxt.setText("0"); 
     edtxt.setOnFocusChangeListener(new View.OnFocusChangeListener() { 

      public void onFocusChange(View v, boolean hasFocus) { 
       // TODO Auto-generated method stub 
       update(); 
      } 
     }); 
    } 

    public void update() { 
     EditText edittxt = (EditText)findViewById(R.id.editText1); 
     Integer i = Integer.parseInt(edittxt.getText().toString()); 
     // If i is an empty value, app crashes so if I erase the zero 
     //on the phone and change focus, the app crashes 
    } 
} 

He intentado el siguiente en la actualización():

String str = edittxt.getText().toString(); 
if (str == "") { 
    edittxt.setText("0"); 
} 

Pero no funciona. ¿Cómo puedo permitir que el texto de edición nunca sea emty, vuelva a cero cuando esté vacío pero no cuando exista un valor? Ya me he asegurado de que el texto de edición solo permita valores numéricos.

Respuesta

5
if(str.equals("")){ 
    edittxt.setText("0"); 
} 

WarrenFaith tiene razón. Consulte esta publicación para obtener más información sobre este tema: Java String.equals versus ==

+1

¡Muchas gracias! Esto funcionó. – Anomaly

+0

Si te tropiezas con este problema, debes leer acerca de las diferencias entre 'equals()' y '=='. @ Christian: tal vez un poco más de una explicación sería agradable, ya que este tema sugiere que los fundamentos no están claros para el OP :) – WarrenFaith

0

Recomendaría rodear su llamada parseInt con un bloque try/catch que atrapa una NumberFormatException que probablemente sea el error que se está produciendo (ya que no especificó, puedo sólo adivinar), por lo que se ve así:

public void update() { 
    EditText edittxt = (EditText)findViewById(R.id.editText1); 
    Integer i; 
    try { 
     i = Integer.parseInt(edittxt.getText().toString()); 
     // do something with i 
    } catch (NumberFormatException e) { 
     // log and do something else like notify the user or set i to a default value 
    }  
} 
Cuestiones relacionadas