2016-07-15 6 views
1

Dies ist mein Android-Code, hier ist eine Anmeldeseite mit "Name", "Handy Nein", "E-Mail", "Passwort", "Passwort bestätigen" und ich habe hinzugefügt setError Methode für jeden editText ist leer, aber was passiert, wenn ich auf die Schaltfläche "Registrieren" klicken Android zeigt die Fehlermeldung, aber es wartet nie auf den Benutzer, es führt direkt die OnClick Aktion für die Anmeldung.Stoppen Sie eine Aktion, wenn ".setError"

was ich brauche ist, wenn der Benutzer "Anmeldung" trifft, sollte es nach dem Leerzeichen suchen, wenn es Leerzeichen gibt, sollte die OnClick Aktion nicht fortgesetzt werden.

Hier ist mein Android-Code:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_signup); 
    final EditText etName = (EditText) findViewById(R.id.etName); 
    final EditText etEmail = (EditText) findViewById(R.id.etEmail); 
    final EditText etMobileNo = (EditText) findViewById(R.id.etMobileNo); 
    final EditText etPassword = (EditText) findViewById(R.id.etPassword); 
    final EditText etConfirmPassword = (EditText) findViewById(R.id.etConfirmPassword); 
    final Button bSignUp = (Button) findViewById(R.id.bSignUp); 

    bSignUp.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      name = etName.getText().toString; 
      email = etEmail.getText().toString(); 
      mobile = etMobileNo.getText().toString(); 
      password = etPassword.getText().toString(); 
      confirmpassword = etConfirmPassword.getText().toString(); 



      CheckMissing();  //Check for Missing entries and Password Matches. 



      Response.Listener<String> responseListener = new Response.Listener<String>() { 
       private ProgressDialog loading; 
       @Override 
       public void onResponse(String response) { 
        try { 
         JSONObject jsonResponse = new JSONObject(response); 
         boolean success = jsonResponse.getBoolean("success"); 
         loading = ProgressDialog.show(SignupActivity.this, "Thank You...", "Registering Now...", false, false); 
         if (success) { 
          loading.dismiss(); 
          Intent intent = new Intent(SignupActivity.this, LoginActivity.class); 
          SignupActivity.this.startActivity(intent); 
         } else { 
          AlertDialog.Builder builder = new AlertDialog.Builder(SignupActivity.this); 
          builder.setMessage("Register Failed") 
            .setNegativeButton("Retry", null) 
            .create() 
            .show(); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }; 

      SignupRequest signupRequest = new SignupRequest(name, email, mobile, password, responseListener); 
      RequestQueue queue = Volley.newRequestQueue(SignupActivity.this); 
      queue.add(signupRequest); 
     } 
    }); 
} 

public void CheckMissing() { 
    EditText name = (EditText) findViewById(R.id.etName); 
    if (name.getText().toString().isEmpty()) { 
     name.setError("You need to enter name"); 
    } 
    EditText email = (EditText) findViewById(R.id.etEmail); 
    if (email.getText().toString().isEmpty()) { 
     email.setError("You need to enter Email"); 
    } 

    EditText mobile = (EditText) findViewById(R.id.etMobileNo); 
    if (mobile.getText().toString().isEmpty()) { 
     mobile.setError("You need to enter mobile"); 
    } 
    EditText password = (EditText) findViewById(R.id.etPassword); 
    String Pass = password.getText().toString(); 
    if (password.getText().toString().isEmpty()) { 
     password.setError("You need to enter password"); 
    } 
    EditText confirmpassword = (EditText) findViewById(R.id.etConfirmPassword); 
    String Conpass = confirmpassword.getText().toString(); 
    if (confirmpassword.getText().toString().isEmpty()) { 
     confirmpassword.setError("You need to enter confirmpassword"); 
    } 
    if (!Pass.equals(Conpass)) { 
     confirmpassword.setError("Password Doesnt Match"); 
    } 
} 
} 

Antwort

1

Fügen Sie einen booleschen Rückgabetyp inhinzu:

public boolean CheckMissing() { 
    boolean shouldProceed = true; 
    EditText name = (EditText) findViewById(R.id.etName); 
    if (name.getText().toString().isEmpty()) { 
     name.setError("You need to enter name"); 
     shouldProceed = false; 
    } 
    EditText email = (EditText) findViewById(R.id.etEmail); 
    if (email.getText().toString().isEmpty()) { 
     email.setError("You need to enter Email"); 
     shouldProceed = false; 
    } 

    EditText mobile = (EditText) findViewById(R.id.etMobileNo); 
    if (mobile.getText().toString().isEmpty()) { 
     mobile.setError("You need to enter mobile"); 
     shouldProceed = false; 
    } 
    EditText password = (EditText) findViewById(R.id.etPassword); 
    String Pass = password.getText().toString(); 
    if (password.getText().toString().isEmpty()) { 
     password.setError("You need to enter password"); 
     shouldProceed = false; 
    } 
    EditText confirmpassword = (EditText) findViewById(R.id.etConfirmPassword); 
    String Conpass = confirmpassword.getText().toString(); 
    if (confirmpassword.getText().toString().isEmpty()) { 
     confirmpassword.setError("You need to enter confirmpassword"); 
     shouldProceed = false; 
    } 
    if (!Pass.equals(Conpass)) { 
     confirmpassword.setError("Password Doesnt Match"); 
     shouldProceed = false; 
    } 

    return shouldProceed; 
} 

Dann in OnClickListener von Download Button:

if (!CheckMissing()) 
    return; 
3

CheckMissing() Wandle boolean statt zurückzukehren, ex:

public boolean isMissingFields(){...} 

dann, die Sie in Ihrem onClick Methode CheckMissing() ändern können:

if(isMissingFields()) return; 
+0

Im Grunde ist dies. – Vucko

Verwandte Themen