2012-07-18 3 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에 대한 조건이 집중 경우 사용하여 빈 TextField를 테스트 할 수 있습니다.

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

을 나는 그것이 오래된 질문을 이해하지만, 당신이 .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); 
} 
대신) .isEmpty를 (사용이 도움이 있습니다
관련 문제