Yanıtlar:
Bir keresinde böyle bir şey yaptım;
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;
}
VEYA audrius Başına
private boolean isEmpty(EditText etText) {
return etText.getText().toString().trim().length() == 0;
}
İşlev dönüş false
metin düzenleme anlamına gelir not empty
ve dönüş true
metin düzenleme anlamına gelirse empty
...
return etText.getText().toString().trim().length() == 0
doğru / yanlış dallar yerine kullanmamanın özel bir nedeni var mı?
private Boolean isEmpty(EditText etText){return etText.Text.ToString().Trim().Length == 0;}
VS 2019
Doğrulama için EditText kullanımı EditText # setError göstermek hata ve robot sınıf dahili boş veya boş değer kullanımını kontrol etmek için bir yöntem TextUtils.isEmpty (strVar) strVar boş veya sıfır uzunlukta ise doğru döndürür
EditText etUserName = (EditText) findViewById(R.id.txtUsername);
String strUserName = etUserName.getText().toString();
if(TextUtils.isEmpty(strUserName)) {
etUserName.setError("Your message");
return;
}
)
if ifadesine başka bir tane eklemelisiniz .
usernameEditText
olan EditText
nesne ve şimdi onun yeniden adlandırıldı etUserName
.toString();
gerekli değildir
bunu dene :
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;
}
veya şu gibi TextUtils sınıfını kullanın :
if(TextUtils.isEmpty(strUserName)) {
Toast.makeText(this, "plz enter your name ", Toast.LENGTH_SHORT).show();
return;
}
Burada partiye geç, ama ben sadece Android kendi TextUtils.isEmpty (CharSequence str) eklemek zorunda
Dize null veya 0 uzunlukta olursa true değerini döndürür
Beş EditTexts öğenizi bir listeye koyarsanız, tam kod şöyle olur:
for(EditText edit : editTextList){
if(TextUtils.isEmpty(edit.getText()){
// EditText was empty
// Do something fancy
}
}
isEmpty()
Bir sürer CharSequence
, hangi Editable
uzanır, bu yüzden aramaya gerek yoktur .toString()
üzerine.
Diğer cevaplar doğrudur, ancak kısa bir şekilde yapın
if(editText.getText().toString().isEmpty()) {
// editText is empty
} else {
// editText is not empty
}
Bunu dene
TextUtils.isEmpty(editText.getText());
EditText boşsa düğmeyi neden devre dışı bırakmıyorsunuz? IMHO Bu daha profesyonel görünüyor:
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) {
}
});
Sen kullanabilirsiniz length()
gelen EditText
.
public boolean isEditTextEmpty(EditText mInput){
return mInput.length() == 0;
}
Genelde SBJ'nin önerisini yapıyorum ama tam tersini yapıyorum . Çift negatifler yerine olumlu sonuçlar kontrol ederek kodumu anlamayı daha kolay buluyorum. Boş EdiTexts'i nasıl kontrol edeceğinizi soruyor olabilirsiniz, ancak gerçekten bilmek istediğiniz şey, içeriğin boş olup olmadığı değil.
Şöyle ki:
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 ben dönmek tercih (veya "hiçbir içeriğe sahip" false
Benim içerik çek borked çünkü önlemek istisnalara varsayılan olarak). Bu şekilde,true
a'nın çekleriniz tarafından "onaylanmış" .
Ben de if
arama biraz daha temiz görünüyor düşünüyorum :
if (hasContent(myEditText)) {
// Act upon content
} else {
// Got no content!
}
Tercihlere çok bağlı, ama bunu okumayı daha kolay buluyorum. :)
trim()
Boşlukları önlemek için kullanılan bu yöntemi kullanın :
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;
}
birkaç EditText'iniz varsa bir örnek
if (("".equals(edtUser.getText().toString().trim()) || "".equals(edtPassword.getText().toString().trim()))){
Toast.makeText(this, "a value is missing!", Toast.LENGTH_LONG).show();
return;
}
Tüm EditText Dizelerini tek bir If durumunda kontrol edebilirsiniz: this like this like
if (mString.matches("") || fString.matches("") || gender==null || docString.matches("") || dString.matches("")) {
Toast.makeText(WriteActivity.this,"Data Incomplete", Toast.LENGTH_SHORT).show();
}
Benzer bir şey yapmak istedim. Ancak metin değerini düzenleme metninden almak ve karşılaştırmak (str=="")
benim için işe yaramadı. Yani daha iyi bir seçenek:
EditText eText = (EditText) findViewById(R.id.etext);
if (etext.getText().length() == 0)
{//do what you want }
Bir cazibe gibi çalıştı.
Bunu ELSE If koşullarını kullanarak deneyin. EditText alanlarınızı kolayca doğrulayabilirsiniz.
if(TextUtils.isEmpty(username)) {
userNameView.setError("User Name Is Essential");
return;
} else if(TextUtils.isEmpty(phone)) {
phoneView.setError("Please Enter Your Phone Number");
return;
}
"hoşuna gidecek bu im göz atın."
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);
}
}
});
kullanımı TextUtils.isEmpty("Text here");
tek satır kodu
bu kısa kodla dizenin başında ve sonunda boş alanı silebilirsiniz. Dize "" iletisini döndürürse "hata" ise başka bir dize
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();
}
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");
}
beş düzenleme metninin tümü için bunu yap
Kullanabilirsiniz, setOnFocusChangeListener
odak değişimini kontrol edecektir
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!");
}
}
}
});
ButterKnife liste bağlamasını kullanmayı ve sonra listeye eylemleri uygulamayı tercih ederim . Örneğin, EditTexts durumunda, ben bir yardımcı program sınıfında tanımlanmış aşağıdaki özel eylemleri var (bu durumda 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());
}
};
Ve görünüm kodunda, bir listeye EditTexts bağlamak ve görünümleri kontrol etmek gerektiğinde eylemleri uygulamak.
@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();
}
Ve elbette bu model, herhangi bir sayıda görünümdeki herhangi bir özelliği kontrol etmek için genişletilebilir. Tek dezavantajı, bunu diyebilirseniz, görüşlerin fazlalığıdır. Yani, bu EditTexts'i kullanmak için, bunları tek değişkenlere de bağlamanız gerekir, böylece isimlere göre referans verebilirsiniz ya da listedeki ( edits.get(0)
vb.) Pozisyonlarına göre referans vermeniz gerekir . Şahsen, sadece her birini iki kez, bir kez tek bir değişkene ve bir kez bir listeye bağlarım ve hangisini uygunsa kullanırım.
Şunu deneyin: its in 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()
}
}
teşekkür ederim
Aşağıdakiler benim için tek bir ifadede çalışıyor:
if(searchText.getText().toString().equals(""))
Log.d("MY_LOG", "Empty");
Önce bir metin alıyorum EditText
ve sonra bir dizeye dönüştürmek ve son olarak yöntemi ""
kullanarak karşılaştırarak .equals
.
özel geçersiz 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();
}
}
}