简体   繁体   中英

android registration activity crash

I'm working on an app that requires an registration activty. The problem i have is that whenever i leave more than 2 EditTexts empty my app crashes: this is the code i use for the registration activity:

import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class Register extends AppCompatActivity implements View.OnClickListener{
EditText etName, etAge, etUsername, etPassword;
Button bRegister;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register);

    etName = (EditText) findViewById(R.id.etName);
    etAge = (EditText) findViewById(R.id.etAge);
    etUsername = (EditText) findViewById(R.id.etUsername);
    etPassword = (EditText) findViewById(R.id.etPassword);
    bRegister = (Button) findViewById(R.id.bRegister);

    bRegister.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.bRegister:
            AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(Register.this);
            String name = etName.getText().toString();
            String username = etUsername.getText().toString();
            String password = etPassword.getText().toString();
            int age = Integer.parseInt(etAge.getText().toString());
            if(!(name.trim().length()>0))
            {
                dialogBuilder.setMessage("Please enter your name");
                dialogBuilder.setPositiveButton("Ok", null);
                dialogBuilder.show();
                break;
            }
            if(!(etAge.getText().toString().trim().length()>0)  || age>120)
            {
                dialogBuilder.setMessage("Please enter your age");
                dialogBuilder.setPositiveButton("Ok", null);
                dialogBuilder.show();
                break;
            }
            if(!(username.trim().length()>0))
            {
                dialogBuilder.setMessage("Please enter a username");
                dialogBuilder.setPositiveButton("Ok", null);
                dialogBuilder.show();
                break;
            }
            if(!(password.trim().length()>0))
            {
                dialogBuilder.setMessage("Please enter a password");
                dialogBuilder.setPositiveButton("Ok", null);
                dialogBuilder.show();
                break;
            }
            User user = new User(name, age, username, password);
            registerUser(user);
            break;
    }
}



private void registerUser(User user) {
    ServerRequests serverRequest = new ServerRequests(this);
    serverRequest.storeUserDataInBackground(user, new GetUserCallback() {
        @Override
        public void done(User returnedUser) {
            Intent loginIntent = new Intent(Register.this, LoginScreen.class);
            startActivity(loginIntent);
        }
    });
}

}

Maybe it is because every if-statement in your method gets called, whuch means that DialogBuilder will attempt to show the dialog each time..

try using:

if(....) {
    ....
}
else if(....){ 
    .....
}
else {
    .....
}

FYI:

break only breaks out of the enclosing switch , for , while or do-while construct.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM