31

の検証があり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ます。

4

7 に答える 7

79

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

Kotlinバージョンは次のとおりです。

userName.takeIf { it.isEmpty() }?.let {
  userName.error = "First name is required!"
} ?: run {
   startActivity(Intent(applicationContext, this))
}
于 2012-07-18T05:56:01.063 に答える
7

これを試して:

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);
        }
    }
});
于 2012-07-18T06:22:17.050 に答える
3

私は同様の問題に直面しました。私の場合、検証する必要のある 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;
}
于 2016-10-04T17:40:17.580 に答える
3

古い質問だと思いますが、これが役立つかもしれません.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);
}
于 2017-11-08T06:29:59.463 に答える
2

すべての必須または特別な検証ケースに対して If 条件を使用して空の textField をテストし、setError をフォーカスすることをお勧めします。

If(txtName.getText().toString().trim().equals(""))
{
//Your message or any other validation
}
于 2016-08-17T08:05:04.980 に答える