简体   繁体   中英

Radio Button parse android studio

I'm making a register act (java) in my android studio app and I have a radio group for gender. I'm having trouble with the app crashing when i click the radio buttons to select gender. Im not sure if my code is right for getting the info to store in parse or if how im trying to store in parse is the problem

    enter code here

    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
    import android.widget.Button;
    import android.widget.CompoundButton;
    import android.widget.EditText;
    import android.widget.RadioButton;
    import android.widget.RadioGroup;
    import android.widget.Toast;

    import com.parse.ParseException;
    import com.parse.ParseUser;
    import com.parse.SignUpCallback;

    public class RegisterActivity extends AppCompatActivity {


    protected EditText mUserFirstname;
    protected EditText mUserLastname;
    protected EditText mUsername;
    protected EditText mUserPassword;
    protected EditText mUserEmail;
    protected EditText mUserPhonenumber;
    protected EditText mUserPostalcode;
    protected RadioGroup mGender;
    protected RadioButton mMale;
    protected RadioButton mFemale;
    protected EditText mDob;
    protected Button mRegisterbutton;
    private static final String COLUMN_GENDER = ""; //put here name of your column from table on Parse.com
    private static final String MALE = ""; //put here value for male. Check the type of gender column on Parse.com (String, Number (Integer), Boolean, etc.)
    private static final String FEMALE = ""; //put here value for female. Check the type of gender column on Parse.com (String, Number (Integer), Boolean, etc.)


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

       mMale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
           @Override
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
               if (isChecked) {ParseUser user = new ParseUser();
                   user.put(COLUMN_GENDER, MALE);
                   user.saveInBackground(); // if you want to save immediately

               }
           }
       });

        mFemale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {ParseUser user = new ParseUser();
                    user.put(COLUMN_GENDER, FEMALE);
                    user.saveInBackground(); // if you want to save immediately
                }
            }
        });



                //initialize
                mUserFirstname = (EditText) findViewById(R.id.firstNameRegisterEditText);
                mUserLastname = (EditText) findViewById(R.id.lastNameRegisterEditText);
                mUsername = (EditText) findViewById(R.id.userNameRegisterEditText);
                mUserPassword = (EditText) findViewById(R.id.passwordRegisterEditText);
                mUserEmail = (EditText) findViewById(R.id.emailRegisterEditText);
                mUserPhonenumber = (EditText) findViewById(R.id.phoneNumberRegisterEditText);
                mUserPostalcode = (EditText) findViewById(R.id.postalCodeRegisterEditText);
                mGender = (RadioGroup) findViewById(R.id.radioGroup);
                mMale = (RadioButton) findViewById(R.id.maleGenderRegisterEditText);
                mFemale = (RadioButton) findViewById(R.id.femaleGenderRegisterEditText);
                mDob = (EditText) findViewById(R.id.dateofBirthEditText);
                mRegisterbutton = (Button) findViewById(R.id.registerButton);



                //Listen to Register button click
                mRegisterbutton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        //toast

                        //get the username, password and email and convert to string

                        String username = mUsername.getText().toString().trim();
                        String password = mUserPassword.getText().toString().trim();
                        String email = mUserEmail.getText().toString().trim();
                        String firstname = mUserFirstname.getText().toString().trim();
                        String lastname = mUserLastname.getText().toString().trim();
                        String phonenumber = mUserPhonenumber.getText().toString().trim();
                        String postalcode = mUserPostalcode.getText().toString().trim();
                        String gender = mMale.isChecked() ? MALE : FEMALE;
                        //store user
                        ParseUser user = new ParseUser();
                        user.setUsername("my name");
                        user.setPassword("my pass");
                        user.setEmail("email@example.com");

// other fields can be set just like with ParseObject
                        user.put("first name", "my name");
                        user.put("last name", "my name");
                        user.put("postal", "65055");
                        user.put("gender", "male or female");
                        user.put("dob", "mm/dd/yyyy");
                        user.put("phone", "650-253-0000");
                        user.put(COLUMN_GENDER, gender);

                        user.signUpInBackground(new SignUpCallback() {
                            @Override
                            public void done(ParseException e) {
                                if (e==null) {
                                    //user signed up succesfully
                                    Toast.makeText(RegisterActivity.this,"Welcome To The Party...", Toast.LENGTH_LONG).show();

                                    //take user to homepage
                                }else {
                                // there was and error sigingup user. advise user
                                }

                            }
                        });


                    }
                });



                });
            }

I think you are calling setOnCheckedChangeListener() before initializing the radio buttons. So try moving your initializers to the top, then the radio button.

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);

           //initialize first
                    mUserFirstname = (EditText) findViewById(R.id.firstNameRegisterEditText);
                    mUserLastname = (EditText) findViewById(R.id.lastNameRegisterEditText);
                    mUsername = (EditText) findViewById(R.id.userNameRegisterEditText);
                    mUserPassword = (EditText) findViewById(R.id.passwordRegisterEditText);
                    mUserEmail = (EditText) findViewById(R.id.emailRegisterEditText);
                    mUserPhonenumber = (EditText) findViewById(R.id.phoneNumberRegisterEditText);
                    mUserPostalcode = (EditText) findViewById(R.id.postalCodeRegisterEditText);
                    mGender = (RadioGroup) findViewById(R.id.radioGroup);
                    mMale = (RadioButton) findViewById(R.id.maleGenderRegisterEditText);
                    mFemale = (RadioButton) findViewById(R.id.femaleGenderRegisterEditText);
                    mDob = (EditText) findViewById(R.id.dateofBirthEditText);
                    mRegisterbutton = (Button) findViewById(R.id.registerButton);

      //listen to checked changes next
           mMale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
               @Override
               public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                   if (isChecked) {ParseUser user = new ParseUser();
                       user.put(COLUMN_GENDER, MALE);
                       user.saveInBackground(); // if you want to save immediately

                   }
               }
           });

            mFemale.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (isChecked) {ParseUser user = new ParseUser();
                        user.put(COLUMN_GENDER, FEMALE);
                        user.saveInBackground(); // if you want to save immediately
                    }
                }
            });







                    //Listen to Register button click
                    mRegisterbutton.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            //toast

                            //get the username, password and email and convert to string

                            String username = mUsername.getText().toString().trim();
                            String password = mUserPassword.getText().toString().trim();
                            String email = mUserEmail.getText().toString().trim();
                            String firstname = mUserFirstname.getText().toString().trim();
                            String lastname = mUserLastname.getText().toString().trim();
                            String phonenumber = mUserPhonenumber.getText().toString().trim();
                            String postalcode = mUserPostalcode.getText().toString().trim();
                            String gender = mMale.isChecked() ? MALE : FEMALE;
                            //store user
                            ParseUser user = new ParseUser();
                            user.setUsername("my name");
                            user.setPassword("my pass");
                            user.setEmail("email@example.com");

    // other fields can be set just like with ParseObject
                            user.put("first name", "my name");
                            user.put("last name", "my name");
                            user.put("postal", "65055");
                            user.put("gender", "male or female");
                            user.put("dob", "mm/dd/yyyy");
                            user.put("phone", "650-253-0000");
                            user.put(COLUMN_GENDER, gender);

                            user.signUpInBackground(new SignUpCallback() {
                                @Override
                                public void done(ParseException e) {
                                    if (e==null) {
                                        //user signed up succesfully
                                        Toast.makeText(RegisterActivity.this,"Welcome To The Party...", Toast.LENGTH_LONG).show();

                                        //take user to homepage
                                    }else {
                                    // there was and error sigingup user. advise user
                                    }

                                }
                            });


                        }
                    });



                    });
                }

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