在移动到另一个Activity之前,需要editText字段

我有editTextvalidation。 如果editText字段为空,则应该validation失败,并停止用户移动到另一个Activity ,因为需要一个值。 怎么做? 我知道这是一个基本的问题,但我不知道如何做到这一点。

我的代码:

 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被点击时,用户将redirect到下一个屏幕,但是如果validation失败,他们将停留在当前的Activity ,并且只有在validation成功(即input了一个值)的情况下才会进入下一个Activity

Solutions Collecting From Web of "在移动到另一个Activity之前,需要editText字段"

你可以这样做…删除你的If condition并将其replace。

 if( userName.getText().toString().trim().equals("")){ /** * 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); } 

尝试这个:

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

你也可以试试这个:

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

使用If条件testing所有必需的或特殊的validation案例和setError来更好地testing空的textField。

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

我遇到了一个类似的问题。 在我的情况下,我有很多Edittexts来validation,有些他们是另一种布局的孩子。 提示:所有视图必须位于相同的根视图中。 所以,要简单:

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

我知道这是一个老问题,但可能会有所帮助,您可以使用.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); }