2012-07-18 20 views
15

editText için doğrulamam var. editText alanı boşsa, doğrulama başarısız olmalı ve bir değer gerektiğinde kullanıcının başka bir Activity ürününe geçmesini durdurun. Nasıl yapılır? Bunun temel bir soru olduğunu biliyorum, ancak bunu nasıl yapacağımı anlayamıyorum.editText alanı başka bir Aktiviteye geçmeden önce gereklidir

Kodum:

btninsert = (Button)findViewById(R.id.btn_insert); 
btninsert.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     insertValues(); 
     EditText userName = (EditText) findViewById(R.id.editText1); 

     if(userName.getText().toString().length() == 0) 
      userName.setError("First name is required!"); 

     Intent i = new Intent(getApplicationContext(), Login.class); 
     startActivity(i); 
    } 
}); 

bu Button kullanıcı tıklandığında sonraki ekrana yönlendirmek, ama doğrulama onlar şimdiki Activity kalmak başarısız olursa ve doğrulama başarılı olduğu zaman buna ihtiyacım (yani değer girildi) sonraki Activity'a giderler.

cevap

39

Bu kolay ... EditText'inizin aşağıdaki örnekte olduğu gibi boş olup olmadığını kontrol edin.

if(TextUtils.isEmpty(userName.getText())){ 
    /** 
    * You can Toast a message here that the Username is Empty  
    **/ 

    userName.setError("First name is required!"); 

}else{ 
    Intent i = new Intent(getApplicationContext(), Login.class); 
    startActivity(i); 
} 
6

bu deneyin:

bt.setOnClickListener(new OnClickListener() { 
    public void onClick(View arg0) 
    { 
     String str=et.getText().toString(); 

     if(str.equalsIgnoreCase("")) 
     { 
      et.setHint("please enter username");//it gives user to hint 
      et.setError("please enter username");//it gives user to info message //use any one // 
     } 
     else 
     { 
      Intent in=new Intent(getApplicationContext(),second.class); 
      startActivity(in); 
     } 
    } 
}); 
4

Ayrıca bu deneyebilirsiniz:

if ((userName.getText().toString().trim().equals(""))) 
{ 
     Toast.makeText(getApplicationContext(), "User name is empty", Toast.LENGTH_SHORT).show(); 
} 
else 
{ 
     Intent i = new Intent(getApplicationContext(), Login.class); 
     startActivity(i); 
} 
1

Daha İyi gerekli tüm veya özel doğrulama durumlarda ve setError koşulu odaklanmak durumunda kullanarak boş textfield'ı test etmek.

If(txtName.getText().toString().trim().equals("")) 
{ 
//Your message or any other validation 
} 
0

Benzer bir sorunla karşılaştım. Benim durumumda, doğrulamak için bir çok Edittexts vardı, bazıları başka bir düzenin çocuğuydu. İpucu: tüm görünümler aynı kök görünümde olmalıdır. Yani, basit olacak şekilde:

... 
LinearLayout viewGroup = (LinearLayout) findViewById(R.id.viewGroup); 
checkFieldsRequired(viewGroup); 
... 

public boolean checkFieldsRequired(ViewGroup viewGroup){ 

    int count = viewGroup.getChildCount(); 
    for (int i = 0; i < count; i++) { 
     View view = viewGroup.getChildAt(i); 
     if (view instanceof ViewGroup) 
      checkFieldsRequired((ViewGroup) view); 
     else if (view instanceof EditText) { 
      EditText edittext = (EditText) view; 
      if (edittext.getText().toString().trim().equals("")) {     
       edittext.setError("Required!");     
      } 
     } 
    } 

    return false; 
} 
1

Ben eski bir soru anlıyorum ama, sen .equals()

if(userName.getText().toString().isEmpty()){ 

    /** 
    * You can Toast a message here that the Username is Empty  
    **/ 

    userName.setError("First name is required!"); 

}else{ 
    Intent i = new Intent(getApplicationContext(), Login.class); 
    startActivity(i); 
} 
yerine) .isEmpty (kullanabilirsiniz bu yardımcı olur edebilir
İlgili konular