web-dev-qa-db-ja.com

別のアクティビティに進む前に、editTextフィールドが必要です

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に進みます。

25
Krishna Veni

簡単です...次の例のように、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);
}
64

これを試して:

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

これを試すこともできます:

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

私はそれが古い質問であることを理解していますが、これが役立つ場合は、.equals()の代わりに.isEmpty()を使用できます

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

すべての必須または特別な検証ケースに対してif条件を使用し、フォーカスするsetErrorを使用して空のtextFieldをテストする方が適切です。

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

同様の問題に直面しました。私の場合、検証するための多くの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;
}
2
Leonardo Costa