2011-12-27 98 views
5

我有下面的代碼,我想用它來確保我的edittext不會是空的。因此,如果第一次繪製0(零)被刪除,必須恢復到0時,焦點的變化,這是應用程序至今:防止edittext變空

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

我曾嘗試在更新的以下()方法:

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

但它不起作用。我怎樣才能讓edittext永遠不會是空的,當空的時候回覆爲零,但是當值存在的時候沒有回覆到空。我已經確保edittext只能允許數值。

回答

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

沃倫·福斯是對的。參考這篇文章,以瞭解更多關於這個問題:Java String.equals versus ==

+1

非常感謝!這工作。 – Anomaly 2011-12-27 17:05:10

+0

如果你偶然發現這個問題,你應該閱讀關於'equals()'和'=='之間的區別。 @克里斯蒂安:也許更多的解釋將是很好的,因爲這個問題表明基礎知識不清楚的OP :) – WarrenFaith 2011-12-27 17:40:43

0

我會建議圍繞你的parseInt調用一個try/catch塊捕獲一個NumberFormatException可能是被拋出的錯誤(因爲你沒有指定,我可以只是猜測),所以它看起來像:

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