जाँच करें कि क्या EditText खाली है। [बन्द है]


218

मेरे पास EditTextsउपयोगकर्ताओं के लिए इनपुट करने के लिए Android में 5 हैं । मैं जानना चाहूंगा कि क्या मैं सभी 5 की जांच के लिए एक विधि हो सकता है EditTextsअगर वे शून्य हैं। क्या इसे करने का कोई तरीका है??

जवाबों:


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
हाँ क्षमा करें, भूल गए कि आपके पास पाँच थे। आप एक ऐसा कार्य कर सकते हैं जो एक ही काम करता है और इसे पांच बार कॉल करता है - या आप पांच EditText पर लूप कर सकते हैं।
cvaldemar

43
पांडित्यपूर्ण होने के लिए क्षमा करें, लेकिन आप जावा में फ़ंक्शंस नहीं लिखते हैं, जिन्हें वे तरीके कहते हैं ...
वाईजेडआर

1
अगर EditText.setInputType (InputType.TYPE_CLASS_NUMBER); नंबर यह काम नहीं कर रहा है
Zala Janaksinh

64
y'all यह मुश्किल से इसे बनाने की जरूरत है: TextUtils.isEmpty (editText.getText ());
मार्टग्लाबित्ज़

4
मैं आमतौर पर अगर (usernameEditText.getText ()। ToString () .String () .Empty ()) का उपयोग करता हूं
डैनियल जोकर

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

    return true;
}

या प्रति श्रवण के रूप में

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

यदि फ़ंक्शन रिटर्न का falseअर्थ एडिटेक्स है not emptyऔर रिटर्न का trueमतलब है एडिट टेक्स्ट empty...


29
+1 स्ट्रिंग की जाँच खाली स्ट्रिंग IMHO के लिए जाँच करने से बेहतर है। यह लंबाई की जाँच करने से पहले स्ट्रिंग को ट्रिम करने में मदद करेगा ताकि व्हॉट्सएप वर्णों की गिनती न हो। Btw, return etText.getText().toString().trim().length() == 0सच / झूठी शाखाओं के बजाय उपयोग नहीं करने का कोई विशेष कारण ?
ऑड्रियस

1
अच्छी तरह से मुझे लगता है कि कोड की पठनीयता और
स्थिरता है

अगर EditText.setInputType (InputType.TYPE_CLASS_NUMBER); नंबर तो इस का उपयोग करें।
ज़ला जनकसिंह

हाँ इसका काम क्योंकि इसकी लंबाई पर निर्भर ...
SBJ

private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}VS 2019
सिद्धार्थ राउत

145

शो त्रुटि के लिए EditText # setError विधि का उपयोग करने के लिए सत्यापन के लिए और खाली या शून्य मान का उपयोग करने के लिए inbuilt android वर्ग TextUtils.isEmpty (strVar) की जाँच करें, जो सही है अगर strVar सुस्त या शून्य लंबाई है

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

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

Google खोज से लिया गया चित्र


)यदि आपको कथन में कोई अन्य जोड़ना चाहिए ।
15 ʍѳђ ૯ '

1
@AndroidIII लोग मेरी टाइपो गलती की ओर इशारा करने के लिए धन्यवाद, मैंने अपना जवाब अपडेट कर लिया है :)
मिलापांक

दूसरा क्षेत्र "" usernameEditText "" नहीं समझ सकता है।
सैम

इसकी मेरी टाइपो @Sam मैं अपने जवाब को अपडेट किया है usernameEditTextहै EditTextवस्तु और अब इसके नाम दिया 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

29

यहाँ पार्टी के लिए देर हो चुकी है, लेकिन मुझे बस Android के खुद के TextUtils.isEmpty (CharSequence) को जोड़ना होगा

अगर स्ट्रिंग शून्य या 0-लंबाई है, तो यह सही है

इसलिए यदि आप एक सूची में अपने पाँच EditTexts डालते हैं, तो पूरा कोड होगा:

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

isEmpty () रिक्त स्थान की जांच नहीं करता है, एक स्थान में प्रवेश करने का प्रयास करें
हंट

3
@ हंट यह सच है, लेकिन तब यह खाली या अशक्त नहीं होगा। हो सकता है कि TextUtils.isEmpty (sUserName.trim ()) सभी रिक्त स्थान को निकालने के लिए उपयुक्त होगा, यदि उपयोगकर्ता ने एक या कई रिक्त स्थानों में प्रवेश किया है?
Q44z1

isEmpty()एक लेता है CharSequence, जो Editableविस्तारित होता है, इसलिए उस .toString()पर कॉल करने की कोई आवश्यकता नहीं है।
karl

@ ओंकार अच्छा बिंदु! मेरे उत्तर को अपडेट किया।
Qw4z1

19

अन्य उत्तर सही हैं लेकिन इसे कम तरीके से करें

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


7

यदि EditText खाली है तो बटन को निष्क्रिय क्यों न करें? IMHO यह अधिक पेशेवर लगता है:

        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

मैं आमतौर पर वही करता हूं जो एसबीजे प्रस्तावित करता है, लेकिन दूसरी तरह। मुझे बस दोहरे नकारात्मक के बजाय सकारात्मक परिणामों की जाँच करके अपने कोड को समझना आसान लगता है। आप खाली EdiTexts के लिए जाँच करने के लिए कैसे पूछ सकते हैं, लेकिन आप वास्तव में जानना चाहते हैं कि क्या इसकी कोई सामग्री है और नहीं कि यह खाली नहीं है।

इस तरह:

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

एसबीजे के रूप में मैं falseअपवादों से बचने के लिए डिफ़ॉल्ट रूप में "कोई सामग्री नहीं है" (या ) को वापस करना पसंद करता हूं क्योंकि मैंने अपनी सामग्री की जांच की। इस तरह से आप पूरी तरह से निश्चित हो जाएंगे कि 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´s हैं

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 स्ट्रिंग्स की जांच कर सकते हैं: इस तरह

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

यदि ईएलएसई यदि स्थितियां हैं, तो इसका उपयोग करके देखें। आप अपने 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");
}

आप लॉगकट में संदेश देखेंगे ...।


1

"इस im को सुनिश्चित करें कि आप इसे पसंद करेंगे।"

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

इस छोटे कोड से आप स्ट्रिंग के प्रारंभ और अंत में खाली जगह को हटा सकते हैं। यदि स्ट्रिंग "" संदेश लौटाता है "त्रुटि" तो आप स्ट्रिंग का उपयोग करते हैं

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

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");

}

सभी पाँच संपादित पाठ के लिए इसे पसंद करें


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

मैं बटरकाइफ़ सूची बाइंडिंग का उपयोग करना पसंद करता हूं और फिर सूची पर कार्रवाई करना। उदाहरण के लिए, 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());
    }
};

और दृश्य कोड में, मैं EditTexts को एक सूची में बाँधता हूं और जब मुझे विचारों की जांच करने की आवश्यकता होती है तो क्रियाएं लागू करता है।

@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();
}

और निश्चित रूप से यह पैटर्न किसी भी संख्या पर किसी भी संपत्ति को देखने के लिए विस्तार योग्य है। केवल नकारात्मक पक्ष, अगर आप इसे कह सकते हैं कि, विचारों की अतिरेक है। मतलब, उन EditTexts का उपयोग करने के लिए, आपको उन्हें एकल चर के साथ बाँधना होगा ताकि आप उन्हें नाम से संदर्भित कर सकें या आपको सूची ( edits.get(0), आदि) में स्थिति के अनुसार उनका संदर्भ देना होगा । व्यक्तिगत रूप से, मैं उनमें से प्रत्येक को दो बार बाँधता हूं, एक बार एक चर को और एक बार सूची में और जो भी उपयुक्त हो उसका उपयोग करें।


0

EditText खाली करने के लिए एक और सरल तरीका आज़माएं:

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

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

मामले को अनदेखा क्यों करें ?!
टिमा

0

इसे बाहर की कोशिश करें: कोटलिन में

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

निम्नलिखित सभी एक बयान में मेरे लिए काम करता है:

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

पहले मैं एक पाठ को EditTextफिर से प्राप्त करता हूं और फिर इसे एक स्ट्रिंग में परिवर्तित करता हूं और अंत में इसे विधि ""का उपयोग करके तुलना करता हूं .equals


0

यह कार्य मेरे लिए काम करता है

निजी शून्य चेकफ़ॉर्म () {

    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();
            }
            }
            }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.