2011-12-27 14 views
5

私は自分のedittextが空ではないことを確認するために使用したい次のコードを持っています。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 
    } 
} 

私はupdate()メソッドで次のように試してみました:

だから、最初に描かれた0(ゼロ)は、ここでは、フォーカスの変更は、アプリはこれまでのところであるとき、それは0に戻す必要があります削除された場合
String str = edittxt.getText().toString(); 
if (str == "") { 
    edittxt.setText("0"); 
} 

しかし、動作しません。エディットテキストがemtyにならないようにするにはどうすればいいですか?空の場合はゼロに戻しますが、値が存在する場合は戻しません。私は既にedittextが数値だけを許可できることを確認しました。

答えて

5

ウォーレンファイズが正しい。 Java String.equals versus ==

+1

ありがとうございました!これはうまくいった。 – Anomaly

+0

この問題が発生した場合は、 'equals()'と '=='の違いについてお読みください。 @Christian:この問題は基本がOPのために不明であることを示唆するので、多分説明のもう少しがいいだろう:) – WarrenFaith

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 
    }  
} 
関連する問題