web-dev-qa-db-ja.com

EditTextが空かどうか確認してください。

ユーザーが入力できるように、Androidに5つのEditTextsがあります。 5つすべてのEditTextsがnullの場合にチェックする方法があるかどうかを知りたいです。これを行う方法はありますか?

201
Winona

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

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;
}
341
cvaldemar
private boolean isEmpty(EditText etText) {
    if (etText.getText().toString().trim().length() > 0) 
        return false;

    return true;
}

OR Per = audrius

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

関数returnfalseがedittextがnot emptyであり、returntrueがedittextがempty..であることを意味する場合.

171
SBJ

EditTextを検証するには EditText#setError メソッドでshow errorを使い、空または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;
 }

Image taken from Google search

134
MilapTank

これを試して :

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;
}
35
Houcine

ここでパーティーに遅刻しますが、私は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
    }
}
27
Qw4z1

他の答えは正しいですが、短い方法でそれをしなさい

if(editText.getText().toString().isEmpty()) {
     // editText is empty
} else {
     // editText is not empty
}
19
Xar E Ahmer

これを試してください

TextUtils.isEmpty(editText.getText());
10
martyglaubitz

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

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

私は通常 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;
}

As SBJ 私は自分のコンテンツチェックを無効にしたので例外を避けるためにデフォルトで "コンテンツがない"(またはfalse)を返すことを好みます。そのようにしてあなたはtrueがあなたの小切手によって「承認された」ことを絶対に確信するでしょう。

私はまた、それを呼び出すifも少しきれいに見えると思います:

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

それは好みに非常に依存しています、しかし私はこれが読みやすいと思います。 :)

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

あなたは私の例のようにTextUtils.isEmptyを使うことができます!がんばろう

4
Erik Chau

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) {

        }
       });
4
Igor Zelaya

私はこの方法を使います。空白を避けるために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
Elenasys

これにはTextUtilsを使用しました。

if (TextUtils.isEmpty(UsernameInfo.getText())) {
    validationError = true;
    validationErrorMessage.append(getResources().getString(R.string.error_blank_username));
}
3
wildapps
private boolean hasContent(EditText et) {
       return (et.getText().toString().trim().length() > 0);
}
3
LMK

私は似たようなことをやりたかった。しかし、編集テキストからテキスト値を取得して(str=="")のように比較するのは私にとってはうまくいきませんでした。だからより良いオプションは次のとおりです。

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

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

魅力のように働いた。

2
TheOddAbhi

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
Sami Khan

1つのIf条件ですべてのEditText文字列をチェックすることもできます。

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

各編集テキストに対してこの関数を呼び出すことができます。

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

「これをチェックして、きっと好きになるでしょう」

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
Aris_choice

単一行コードにTextUtils.isEmpty("Text here");を使用

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

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

if (UserID.equals("")) 

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

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

1
Jothi

私は ButterKnife リストバインディングを使用してからリストにアクションを適用することを好みます。たとえば、EditTextの場合は、ユーティリティクラスで次のカスタムアクションを定義しています(この場合は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
Saad Farooq

これを試してみてください。

//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
Sharmad Desai

EditTextを空にするには、次の簡単な方法を試してください。

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

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

以下は、私にとって一言で言えます。

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

まずEditTextからテキストを取り出し、それを文字列に変換し、最後に""メソッドを使って.equalsと比較します。

0
Maihan Nijat

この機能は私のために働く

private 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();
            }
            }
            }
0
taha mosaad

あなたは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
hoang lam
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
Aamirkhan

この短いコードで、あなたは文字列の始めと終わりで空のスペースを削除することができます。文字列が ""の場合はメッセージ "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();
}
0
if ( (usernameEditText.getText()+"").equals("") ) { 
    // Really just another way
}
0
Sydwell