जवाबों:
मैंने एक बार कुछ ऐसा किया था;
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;
}
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
...
return etText.getText().toString().trim().length() == 0
सच / झूठी शाखाओं के बजाय उपयोग नहीं करने का कोई विशेष कारण ?
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}
VS 2019
शो त्रुटि के लिए 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;
}
)
यदि आपको कथन में कोई अन्य जोड़ना चाहिए ।
usernameEditText
है EditText
वस्तु और अब इसके नाम दिया etUserName
.toString();
आवश्यक नहीं है
इसे इस्तेमाल करे :
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;
}
यहाँ पार्टी के लिए देर हो चुकी है, लेकिन मुझे बस Android के खुद के TextUtils.isEmpty (CharSequence) को जोड़ना होगा
अगर स्ट्रिंग शून्य या 0-लंबाई है, तो यह सही है
इसलिए यदि आप एक सूची में अपने पाँच EditTexts डालते हैं, तो पूरा कोड होगा:
for(EditText edit : editTextList){
if(TextUtils.isEmpty(edit.getText()){
// EditText was empty
// Do something fancy
}
}
isEmpty()
एक लेता है CharSequence
, जो Editable
विस्तारित होता है, इसलिए उस .toString()
पर कॉल करने की कोई आवश्यकता नहीं है।
अन्य उत्तर सही हैं लेकिन इसे कम तरीके से करें
if(editText.getText().toString().isEmpty()) {
// editText is empty
} else {
// editText is not empty
}
इसे इस्तेमाल करे
TextUtils.isEmpty(editText.getText());
यदि 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) {
}
});
length()
से उपयोग कर सकते हैं EditText
।
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
मैं आमतौर पर वही करता हूं जो एसबीजे प्रस्तावित करता है, लेकिन दूसरी तरह। मुझे बस दोहरे नकारात्मक के बजाय सकारात्मक परिणामों की जाँच करके अपने कोड को समझना आसान लगता है। आप खाली 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!
}
यह वरीयता पर बहुत अधिक निर्भर है, लेकिन मुझे यह पढ़ने में आसान लगता है। :)
मैं इस विधि का उपयोग करता हूं, जो 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;
}
आप किसी भी हालत में सभी EditText स्ट्रिंग्स की जांच कर सकते हैं: इस तरह
if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
}
मैं भी कुछ ऐसा ही करना चाहता था। लेकिन टेक्स्ट को एडिट टेक्स्ट से प्राप्त करना और उसकी तुलना करना (str=="")
मेरे लिए काम नहीं कर रहा था। तो बेहतर विकल्प था:
EditText eText = (EditText) findViewById(R.id.etext);
if (etext.getText().length() == 0)
{//do what you want }
एक जादू की तरह काम किया।
यदि ईएलएसई यदि स्थितियां हैं, तो इसका उपयोग करके देखें। आप अपने 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;
}
"इस 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);
}
}
});
TextUtils.isEmpty("Text here");
सिंगल लाइन कोड के लिए उपयोग करें
इस छोटे कोड से आप स्ट्रिंग के प्रारंभ और अंत में खाली जगह को हटा सकते हैं। यदि स्ट्रिंग "" संदेश लौटाता है "त्रुटि" तो आप स्ट्रिंग का उपयोग करते हैं
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();
}
आप उपयोग कर सकते हैं 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!");
}
}
}
});
मैं बटरकाइफ़ सूची बाइंडिंग का उपयोग करना पसंद करता हूं और फिर सूची पर कार्रवाई करना। उदाहरण के लिए, 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)
, आदि) में स्थिति के अनुसार उनका संदर्भ देना होगा । व्यक्तिगत रूप से, मैं उनमें से प्रत्येक को दो बार बाँधता हूं, एक बार एक चर को और एक बार सूची में और जो भी उपयुक्त हो उसका उपयोग करें।
इसे बाहर की कोशिश करें: कोटलिन में
//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()
}
}
धन्यवाद
निम्नलिखित सभी एक बयान में मेरे लिए काम करता है:
if(searchText.getText().toString().equals(""))
Log.d("MY_LOG", "Empty");
पहले मैं एक पाठ को EditText
फिर से प्राप्त करता हूं और फिर इसे एक स्ट्रिंग में परिवर्तित करता हूं और अंत में इसे विधि ""
का उपयोग करके तुलना करता हूं .equals
।
निजी शून्य चेकफ़ॉर्म () {
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();
}
}
}