2017-01-18 12 views
1

私はを持っています。if statement!= nullと入力するたびに、値が常に真であることがAndroid Studioから警告されます。EditText(nullではない)の値が常に真であるのはなぜですか?

私はデバッグをしようと、それは私がEditTextに何を入力しない場合でも、if blockに移行します。私が代わりに.equals("")を使用する場合、何の問題も起こらないことを

EditText emailEditText = (EditText) findViewById(R.id.profile_email_edit_text); 

if (emailEditText.getText().toString() != null) { // Android studio warning (Condition 'emailEditText.getText().toString() != null' is always 'true') 

    Toast.makeText(this, "Not equal to null passed", Toast.LENGTH_SHORT).show(); 

    // toast message appears when I try it 
} 

注:ここでは

は一例です。

どうしてですか?

+0

私は問題が何であるか分かりません –

+0

EditTextには何らかのテキストが常にあります。何も入力されていなければ、emptry string ""となります。 – Gudin

+0

申し訳ありませんが、私はあなたのために投稿しました –

答えて

2

emailEditText.getText().toString()

あなたの条件にする必要があります。したがって、次の方法ではNPEの可能性はありません。しかしEditText自体はnull場合ないが正しく初期化することができないnull

間違いなく何文字列、が存在しない場合getText空の文字列を返します!

天気が空であるかどうかを確認して、タスクを実行できます。 あなたは多くのオプションを持っている...

emailEditText.getText().toString().matches("") 

emailEditText.getText().toString().trim().equals("") 

emailEditText.getText().toString().trim().length() > 0 

TextUtils.isEmpty(emailEditText.getText().toString()) // .toString(); is not required as @waqaslam pointed out 
+0

TextItils.isEmptyを使用する場合はgetText()でtoString()を呼び出す必要はありません – waqaslam

+0

これは正しい@waqaslam –

+0

@waqaslam bah共有 –

2

EditText#getTextnullを返さないため、Editable#toStringnullを返しません。

Stringには、EditTextの文字が含まれています。文字がない場合は、空のStringを返します。

String"")はnullではありません。

おもしろいことは、EditText#setText(null)を試してみると、空のStringが設定されるということです。 nullを返さない(!emailEditText.getText().toString().isEmpty())

2

EditTextは常にsetText(null)と呼ばれる場合でも、代わりにヌルの空の文字列を返します。

したがって、条件を整えるにはTextUtils.isEmpty()を使用する必要があります。

1

EditTextを作成すると、デフォルトで文字列""が含まれます。だからedittext.getText().toString!=nullを返すと、nullではない""が返されます。したがって、ifの条件は常にtrueです。

代わりに、その条件で偽にしたい場合は、if(edittext.getText().toString().equals(""))を使用してください。

関連する問題