Поле editText требуется, прежде чем переходить к другому действию

У меня есть проверка для editText . Если поле editText пустое, оно должно завершиться неудачей и остановить пользователя, переходящего на другое действие, так как требуется значение. Как это сделать? Я знаю, что это основной вопрос, но я не могу понять, как это сделать.

Мой код:

 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 .

Solutions Collecting From Web of "Поле editText требуется, прежде чем переходить к другому действию"

Вы можете сделать это таким образом … Удалите If condition и замените это.

 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 для всех необходимых или специальных случаев проверки и setError для фокусировки.

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

Я столкнулся с подобной проблемой. В моем случае у меня было много 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; }