EditTextが空かどうかを確認します。[閉まっている]


218

私はEditTextsユーザーが入力するためにアンドロイドで5を持っています。5つすべてEditTextsがnullかどうかをチェックする方法があるかどうか知りたいのですが。これを行う方法はありますか?

回答:


367

私は一度このようなことをしました。

EditText usernameEditText = (EditText) findViewById(R.id.editUsername);
sUsername = usernameEditText.getText().toString();
if (sUsername.matches("")) {
    Toast.makeText(this, "You did not enter a username", Toast.LENGTH_SHORT).show();
    return;
}

4
はい、ごめんなさい、あなたが5つ持っていたことを忘れました。同じことをする関数を作成して5回呼び出すことができます。または、5つのEditTextをループすることもできます。
cvaldemar 2011年

43
知識

1
if EditText.setInputType(InputType.TYPE_CLASS_NUMBER); これは機能していません
Zala Janaksinh 2013

64
必要以上に難しくなっています:TextUtils.isEmpty(editText.getText());
martyglaubitz 14

4
私は通常、(usernameEditText.getText()。toString()。toString()。isEmpty())を使用します
Daniel Jonker

185
private boolean isEmpty(EditText etText) {
    if (etText.getText().toString().trim().length() > 0) 
        return false;

    return true;
}

またはaudriusごと

  private boolean isEmpty(EditText etText) {
        return etText.getText().toString().trim().length() == 0;
    }

もし関数の戻り値falseのEditTextがある手段not emptyとリターンtrue手段でのEditText empty...


29
+1長さのチェックは、空の文字列IMHOのチェックよりも優れています。空白文字が数えられないように、長さをチェックする前に文字列をトリムすると役立ちます。ところで、return etText.getText().toString().trim().length() == 0true / falseブランチの代わりに使用しない特定の理由は?
Audrius

1
まあ、コードの可読性と保守性を推測します...
WiZarD

if EditText.setInputType(InputType.TYPE_CLASS_NUMBER); 数はこれを使用します。
Zala Janaksinh 2013

はい、それは長さに依存するため、機能します...
SBJ 2013

private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}VS 2019
ルート

145

EditTextを検証するには、ShowTextのEditText#setError メソッドを使用し、空またはnull値をチェックするには、組み込みのAndroidクラスTextUtils.isEmpty(strVar)を使用し ます。strVarがnullまたは長さゼロの場合にtrueを返します。

EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();

 if(TextUtils.isEmpty(strUserName)) {
    etUserName.setError("Your message");
    return;
 }

Google検索から取得した画像


)ifステートメントに別のものを追加する必要があります。
15 2015年

1
@Androidenthusiasts私のタイプミスを指摘してくれてありがとう。私の回答を更新しました:)
MilapTank

2番目のフィールド "" usernameEditText "" "String strUserName = usernameEditText.getText()。toString();"を理解できませんでした。どこで宣言しましたか?
サム

@Samそのタイプミスを更新しました私が更新しました私の答えusernameEditTextEditTextオブジェクトで、名前が変更されました etUserName
MilapTank

1
.toString();必須ではありません
MariuszS

36

これを試して :

EditText txtUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = usernameEditText.getText().toString();
if (strUserName.trim().equals("")) {
    Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
    return;
}

または、次のようなTextUtilsクラスを使用します。

if(TextUtils.isEmpty(strUserName)) {
    Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
    return;
}

3
...これがこれを行うための最良の方法です。他の例では、考慮されていない入力を許可しています。
dell116 2012年

29

ここのパーティーにはかなり遅れましたが、Android独自のTextUtils.isEmpty(CharSequence str)を追加するだけです

文字列がnullまたは長さ0の場合、trueを返します

したがって、5つのEditTextをリストに入れると、完全なコードは次のようになります。

for(EditText edit : editTextList){
    if(TextUtils.isEmpty(edit.getText()){
        // EditText was empty
        // Do something fancy
    }
}

isEmpty()は空白スペースをチェックしません。スペースを1つ入力してみてください
Hunt

3
@ハントそれは本当ですが、それはもはや空やnullではありません。多分TextUtils.isEmpty(sUserName.trim())は、ユーザーが1つまたは複数の空白スペースを入力した場合に備えて、すべての空白を削除するのに適切でしょうか?
Qw4z1 2013年

isEmpty()拡張するをとるためCharSequenceEditable呼び出す必要はありません.toString()
karl 14

@karl良い点!私の答えを更新しました。
Qw4z1 14

19

他の答えは正しいですが、簡単な方法でそれを行います

if(editText.getText().toString().isEmpty()) {
     // editText is empty
} else {
     // editText is not empty
}


7

EditTextが空の場合は、なぜボタンを無効にしないのですか?私見これはより専門的に見えます:

        final EditText txtFrecuencia = (EditText) findViewById(R.id.txtFrecuencia);  
        final ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleStartStop);
        txtFrecuencia.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s) {
            toggle.setEnabled(txtFrecuencia.length() > 0);
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {

        }
       });

7

length()から使用できますEditText

public boolean isEditTextEmpty(EditText mInput){
   return mInput.length() == 0;
}

6

私は通常、SBJが提案することを行いますが、その逆です。ダブルネガティブではなくポジティブな結果をチェックすることで、コードを理解しやすくなります。空のEdiTextを確認する方法を尋ねるかもしれませんが、本当に知りたいのは、内容が含まれていて空ではないことではありません。

そのようです:

private boolean hasContent(EditText et) {
    // Always assume false until proven otherwise
    boolean bHasContent = false; 

    if (et.getText().toString().trim().length() > 0) {
        // Got content
        bHasContent = true;
    }
    return bHasContent;
}

以下のようSBJ I「はコンテンツがありません」(または返却することを好むfalse私は私のコンテンツチェックをborkedため)回避の例外をデフォルトとして。そうすれば、あなたはtrue、チェックによってが「承認」されがます。

また、if呼び出しも少しきれいに見えます:

if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}

好みに大きく依存しますが、これは読みやすいと思います。:)


4

私はこの方法を使用します。これはtrim()、空白を避けるために使用します。

EditText myEditText = (EditText) findViewById(R.id.editUsername);
if ("".equals(myEditText.getText().toString().trim()) {
    Toast.makeText(this, "You did not enter a value!", Toast.LENGTH_LONG).show();
    return;
}

EditTextが複数ある場合の例

if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
        Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
        return;
}

4
if(TextUtils.isEmpty(textA.getText())){
            showToast(it's Null");
        }

私の例のようにTextUtils.isEmptyを使用できます!幸運を


3
private boolean hasContent(EditText et) {
       return (et.getText().toString().trim().length() > 0);
}

3

TextUtilsはこれに使用しました:

if (TextUtils.isEmpty(UsernameInfo.getText())) {
    validationError = true;
    validationErrorMessage.append(getResources().getString(R.string.error_blank_username));
}

2

すべてのEditText文字列を1つのIf条件で確認することもできます:このように

if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
                Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
            }

2

似たようなことをしたかった。しかし、エディットテキストからテキスト値を取得し、それを比較すること(str=="")は、私にとってはうまくいきませんでした。だからより良いオプションは:

EditText eText = (EditText) findViewById(R.id.etext);

if (etext.getText().length() == 0)
{//do what you want }

魅力のように働いた。


2

If ELSE If条件を使用してこれを試してください。editTextフィールドを簡単に検証できます。

 if(TextUtils.isEmpty(username)) {
                userNameView.setError("User Name Is Essential");
                return;
         } else  if(TextUtils.isEmpty(phone)) {
                phoneView.setError("Please Enter Your Phone Number");
                return;
            }

2

エディットテキストごとにこの関数を呼び出すことができます。

public boolean isEmpty(EditText editText) {
    boolean isEmptyResult = false;
    if (editText.getText().length() == 0) {
        isEmptyResult = true;
    }
    return isEmptyResult;
}

1
EditText txtUserID = (EditText) findViewById(R.id.txtUserID);

String UserID = txtUserID.getText().toString();

if (UserID.equals("")) 

{
    Log.d("value","null");
}

LogCat ....にメッセージが表示されます。


1

「これをチェックして、きっと気に入っていただけると思います。」

log_in.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        username=user_name.getText().toString();
        password=pass_word.getText().toString();
        if(username.equals(""))
        {
            user_name.setError("Enter username");
        }
        else if(password.equals(""))
        {
            pass_word.setError("Enter your password");
        }
        else
        {
            Intent intent=new Intent(MainActivity.this,Scan_QRActivity.class);
            startActivity(intent);
        }
    }
});


1

この短いコードを使用すると、文字列の最初と最後の空のスペースを削除できます。文字列が ""の場合はメッセージ "error"を返し、それ以外の場合は文字列を入力します

EditText user = findViewById(R.id.user); 
userString = user.getText().toString().trim(); 
if (userString.matches("")) {
    Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
    return; 
}else{
     Toast.makeText(this, "Ok", Toast.LENGTH_SHORT).show();
}

コードの簡単な説明を追加してください。
Terru_theTerror 2018

stackoverflow.com/questions/61766882/… 私の問題を解決してくれますか?
サニー

0
EditText edt=(EditText)findViewById(R.id.Edt);

String data=edt.getText().toString();

if(data=="" || data==null){

 Log.e("edit text is null?","yes");

}

else {

 Log.e("edit text is null?","no");

}

5つのエディットテキストすべてに対してこのようにします


0

使用できますsetOnFocusChangeListener。フォーカスが変更されたときにチェックされます

        txt_membername.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View arg0, boolean arg1) {
            if (arg1) {
                //do something
            } else {
                if (txt_membername.getText().toString().length() == 0) {
                    txt_membername
                            .setError("Member name is not empty, Plz!");
                }
            }
        }
    });


0

私はButterKnifeリストバインディングを使用してから、リストにアクションを適用することを好みます。たとえば、EditTextsの場合、次のカスタムアクションがユーティリティクラスで定義されています(この場合ButterKnifeActions)。

public static <V extends View> boolean checkAll(List<V> views, ButterKnifeActions.Check<V> checker) {
    boolean hasProperty = true;
    for (int i = 0; i < views.size(); i++) {
        hasProperty = checker.checkViewProperty(views.get(i), i) && hasProperty;
    }
    return hasProperty;
}

public static <V extends View> boolean checkAny(List<V> views, ButterKnifeActions.Check<V> checker) {
    boolean hasProperty = false;
    for (int i = 0; i < views.size(); i++) {
        hasProperty = checker.checkViewProperty(views.get(i), i) || hasProperty;
    }
    return hasProperty;
}

public interface Check<V extends View> {
    boolean checkViewProperty(V view, int index);
}

public static final ButterKnifeActions.Check<EditText> EMPTY = new Check<EditText>() {
    @Override
    public boolean checkViewProperty(EditText view, int index) {
        return TextUtils.isEmpty(view.getText());
    }
};

ビューコードでは、EditTextをリストにバインドし、ビューを確認する必要があるときにアクションを適用します。

@Bind({R.id.edit1, R.id.edit2, R.id.edit3, R.id.edit4, R.id.edit5}) List<EditView> edits;
...
if (ButterKnifeActions.checkAny(edits, ButterKnifeActions.EMPTY)) {
    Toast.makeText(getContext(), "Please fill in all fields", Toast.LENGTH_SHORT).show();
}

そしてもちろん、このパターンは、任意の数のビューの任意のプロパティをチェックするように拡張できます。それをあなたがそれと呼べるなら、唯一の欠点はビューの冗長性です。つまり、これらのEditTextを使用するには、それらを単一の変数にバインドして、名前で参照できるようにするか、リスト内の位置(edits.get(0)など)で参照する必要があります。個人的には、それぞれを2回だけバインドします。1回は1つの変数に、もう1回はリストにバインドし、適切な方を使用します。


0

editTextが空の場合は、別の次の簡単な方法を試してください。

String star = editText.getText().toString();

if (star.equalsIgnoreCase("")) {
  Toast.makeText(getApplicationContext(), "Please Set start no", Toast.LENGTH_LONG).show();
}

なぜ大文字小文字を無視するのですか?
Tima

0

これを試してください:Kotlinで

//button from xml
button.setOnClickListener{                                         
    val new=addText.text.toString()//addText is an EditText
    if(new=isNotEmpty())
    {
         //do something
    }
    else{
        new.setError("Enter some msg")
        //or
        Toast.makeText(applicationContext, "Enter some message ", Toast.LENGTH_SHORT).show()
    }
}

ありがとうございました


0

次のことは、すべて私にとって1つのステートメントで機能します。

if(searchText.getText().toString().equals("")) 
    Log.d("MY_LOG", "Empty");

最初にからテキストを取得してからEditText文字列に変換し、最後に""using .equalsメソッドと比較します。


0

この機能は私にとってうまくいきます

プライベートvoid checkempForm(){

    EditText[] allFields = { field1_txt, field2_txt, field3_txt, field4_txt};
    List<EditText> ErrorFields =new ArrayList<EditText>();//empty Edit text arraylist
            for(EditText edit : allFields){
                if(TextUtils.isEmpty(edit.getText())){ 

            // EditText was empty
             ErrorFields.add(edit);//add empty Edittext only in this ArayList
            for(int i = 0; i < ErrorFields.size(); i++)
            {
                EditText currentField = ErrorFields.get(i);
                currentField.setError("this field required");
                currentField.requestFocus();
            }
            }
            }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.