2011-12-27 13 views
5

Ho il seguente codice che voglio usare per assicurarmi che il mio edittext non sia vuoto. Quindi, se la prima disegnata 0 (zero) viene rimosso deve ripristinare 0 quando cambia focus Ecco l'applicazione finora:Impedire che edittext sia vuoto

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 
    } 
} 

Ho provato quanto segue nel metodo update():

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

Ma non funziona. Come posso consentire a edittext di non essere mai emty, tornare a zero quando è vuoto ma non quando esiste un valore. Ho già fatto in modo che l'edittext possa solo consentire valori numerici.

risposta

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

WarrenFaith ha ragione. Fare riferimento a questo post per saperne di più su questo problema: Java String.equals versus ==

+1

Grazie mille! Questo ha funzionato. – Anomaly

+0

Se incappate in questo problema, dovreste leggere le differenze tra 'equals()' e '=='. @Christian: forse un po 'più di una spiegazione sarebbe bella, in quanto questo problema suggerisce che le basi non sono chiare per l'OP :) – WarrenFaith

0

Suggerirei che circonda il vostro parseInt chiamata con un blocco try/catch che intercetta un NumberFormatException che è probabilmente l'errore di essere gettato (in quanto non è stato specificato, posso solo ipotesi), quindi sembra:

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 
    }  
} 
Problemi correlati