Поле 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
.
Ответы
Ответ 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);
}
Ответ 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);
}
}
});
Ответ 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);
}
Ответ 4
Лучше проверить пустой текстовый экран, используя условие If для всех необходимых или специальных случаев проверки и setError для фокусировки.
If(txtName.getText().toString().trim().equals(""))
{
//Your message or any other validation
}
Ответ 5
Я столкнулся с аналогичной проблемой. В моем случае у меня было много 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;
}
Ответ 6
Я понимаю это старый вопрос, но может ли это помочь, вы можете использовать .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);
}