2012-07-18 114 views
15

我對editText進行了驗證。如果editText字段爲空,它應該驗證失敗,並停止用戶移動到另一個Activity,因爲需要值。怎麼做?我知道這是一個基本問題,但我無法弄清楚如何做到這一點。在轉到另一個活動之前需要editText字段

我的代碼:

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

當這個Button點擊用戶重定向到下一個畫面,但我需要,如果驗證失敗,他們停留在當前Activity,只有當驗證成功(即價值已被輸入),他們去下一個Activity

回答

39

很簡單...檢查您的EditText是否爲空,如下面的示例所示。

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

試試這個:

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

你也可以試試這個:

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

更好的使用如果條件爲所有需要的或特殊的驗證情況和SETERROR集中測試的空文本域。

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

我遇到了類似的問題。就我而言,我有很多Edittext來驗證,有些是另一種佈局的小孩。提示:所有視圖必須位於同一根視圖中。所以,很簡單:

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

我知道這是一個老問題,但可能這會有所幫助,您可以使用.isEmpty()代替.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); 
} 
相關問題