EDITTEXT字段上移动到另一个活动之前需要(editText field is required

2019-07-30 12:03发布

我已经验证了editText 。 如果editText字段为空,应该验证失败,并停止用户移动到另一个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被点击用户重定向到下一个画面,但我需要,如果验证失败,他们停留在当前Activity ,并且仅当验证成功(即值已进入),他们进入下一个Activity

Answer 1:

这很容易...检查您的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);
}


Answer 2:

试试这个:

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


Answer 3:

你也可以试试这个:

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


Answer 4:

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


Answer 5:

更好的使用如果条件为所有需要的或特殊的验证情况和SETERROR集中测试的空文本域。

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


Answer 6:

我面临着类似的问题。 就我而言,我有很多Edittexts的验证,其中一些是另一个布局的孩子。 提示:所有意见必须是同根视图。 所以,很简单:

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


文章来源: editText field is required before moving on to another Activity