Android-在活动之间传递ParseUser对象
在我的Android应用程序中,我有3项活动供用户填写个人资料并注册:Android-在活动之间传递ParseUser对象,android,parse-platform,Android,Parse Platform,在我的Android应用程序中,我有3项活动供用户填写个人资料并注册: 在第一活动登记处活动:用户可以填写他们的姓名、地址、电话号码、紧急联系人等 在第二个活动外观活动中:用户可以填写他们的种族、身高、体重、头发颜色、眼睛颜色等 在第三个活动PinsActivity:用户可以填写他们的Pin码、第二个Pin码和密码 我能够传递ParseUser对象,并在第一个活动和第二个活动中保存用户的输入。然而,在第三个活动中,我无法在解析时保存Pin码和密码。我使用Log.d检查userID,这对所有3
- 在第一活动登记处活动:用户可以填写他们的姓名、地址、电话号码、紧急联系人等
- 在第二个活动外观活动中:用户可以填写他们的种族、身高、体重、头发颜色、眼睛颜色等
- 在第三个活动PinsActivity:用户可以填写他们的Pin码、第二个Pin码和密码
protected EditText mFirstName;
protected EditText mMiddleName;
protected EditText mLastName;
protected EditText mUserEmail;
protected EditText mPhoneNumber;
protected EditText mAddressLine1;
protected EditText mAddressLine2;
protected EditText mEmergencyName;
protected EditText mEmergencyPhone;
protected EditText mEmergencyRelationship;
protected EditText mEmergencyOtherInfo;
protected Button mNextPageButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
//Parse.enableLocalDatastore(this);
Parse.initialize(this, "XXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXX");
//Initialize
mFirstName = (EditText)findViewById(R.id.firstNameRegisterEditText);
mMiddleName = (EditText)findViewById(R.id.middleNameRegisterEditText);
mLastName = (EditText)findViewById(R.id.lastNameRegisterEditText);
mUserEmail = (EditText)findViewById(R.id.emailRegisterEditText);
mPhoneNumber = (EditText)findViewById(R.id.phoneRegisterEditText);
mAddressLine1 = (EditText)findViewById(R.id.addressRegisterText);
mAddressLine2 = (EditText)findViewById(R.id.address2RegisterText);
mEmergencyName = (EditText)findViewById(R.id.emergencyNameEditText);
mEmergencyPhone = (EditText)findViewById(R.id.emergencyPhoneEditText);
mEmergencyRelationship = (EditText)findViewById(R.id.emergencyRelationshipEditText);
mEmergencyOtherInfo = (EditText)findViewById(R.id.medicalInfoEditText);
mNextPageButton = (Button)findViewById(R.id.nextPageButton);
//Listen to register button click
mNextPageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Get first name, middle name, last name, user email, phone number, address line 1, address line 2,
//emergency name, emergency phone, emergency relationship, emergency other info and convert them to string
String firstName = mFirstName.getText().toString().trim();
String middleName = mMiddleName.getText().toString().trim();
String lastName = mLastName.getText().toString().trim();
String userEmail = mUserEmail.getText().toString().trim();
String phoneNumber = mPhoneNumber.getText().toString().trim();
String addressLine1 = mAddressLine1.getText().toString().trim();
String addressLine2 = mAddressLine2.getText().toString().trim();
String emergencyName = mEmergencyName.getText().toString().trim();
String emergencyPhone = mEmergencyPhone.getText().toString().trim();
String emergencyRelationship = mEmergencyRelationship.getText().toString().trim();
String emergencyOtherInfo = mEmergencyOtherInfo.getText().toString().trim();
//String password = mUserPassword.getText().toString().trim();
final ParseUser user = new ParseUser();
//Store user in parse
user.put("firstName", firstName);
user.put("middleName", middleName);
user.put("lastName", lastName);
user.put("email", userEmail);
user.put("phoneNumber", phoneNumber);
user.put("addressLine1", addressLine1);
user.put("addressLine2", addressLine2);
user.put("emergencyName", emergencyName);
user.put("emergencyPhone", emergencyPhone);
user.put("emergencyRelationship", emergencyRelationship);
user.put("otherInfo", emergencyOtherInfo);
user.put("username", userEmail);
//Store empty values for username, password, and email because the signUpInBackground requires these fields
//We will actually add these values in later
user.setUsername(userEmail);
user.setEmail(userEmail);
user.setPassword("");
//Need to call Signup first
user.signUpInBackground(new SignUpCallback() {
@Override
public void done(ParseException e) {
if (e == null){
//Saved successfully
//Passing user object to AppearanceActivity and take user to appearance register page
Intent intent = new Intent(RegisterActivity.this, AppearanceActivity.class);
intent.putExtra("user_id", user.getObjectId());
startActivity(intent);
} else {
//Save failed
Log.d("", "User update error: " + e);
}
}
});
}
});
}
}
第二次露面活动
public class AppearanceActivity extends Activity {
protected EditText mEthnicity;
protected EditText mHeight;
protected EditText mWeight;
protected EditText mHairColor;
protected EditText mEyeColor;
protected EditText mBirthday;
protected EditText mGender;
protected Button mNextPageButtonOnAppearance;
String userId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_appearance);
//Receiving
Intent intent = getIntent();
//assigns data that was passed from previous activity.
userId = intent.getExtras().getString("user_id");
Log.d("Kiem", "userID is: " + userId);
//sets variables to their respective xml elements.
mEthnicity = (EditText)findViewById(R.id.ethnicityEditText);
mHeight = (EditText)findViewById(R.id.heightNumberPicker);
mWeight = (EditText)findViewById(R.id.weightEditText);
mHairColor = (EditText)findViewById(R.id.hairEditText);
mEyeColor = (EditText)findViewById(R.id.eyeEditText);
mBirthday = (EditText)findViewById(R.id.birthdayDatePicker);
mGender = (EditText)findViewById(R.id.genderEditText);
mNextPageButtonOnAppearance = (Button)findViewById(R.id.nextPageButtonOnAppearance);
//Listen to Next Page button to click
mNextPageButtonOnAppearance.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//Get ethnicity, height, weight, hair color, eye color, birthday, gender and covert them to string
final String ethnicity = mEthnicity.getText().toString().trim();
final String height = mHeight.getText().toString().trim();
final String weight = mWeight.getText().toString().trim();
final String hairColor = mHairColor.getText().toString().trim();
final String eyeColor = mEyeColor.getText().toString().trim();
String birthday = mBirthday.getText().toString().trim();
final String gender = mGender.getText().toString().trim();
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("objectId", userId);
// Execute the query to find the object with ID
query.getInBackground(userId, new GetCallback<ParseUser>() {
public void done(final ParseUser user, ParseException e) {
if (e == null) {
user.put("ethnicity", ethnicity);
user.put("hairColor", hairColor);
user.put("eyeColor", eyeColor);
user.put("gender", gender);
user.put("height", height);
user.put("weight", weight);
user.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if(e == null){
//Saved successfully
//Passing user object to PinsActivity and take user to Pins register page
Intent intent = new Intent(AppearanceActivity.this, PinsActivity.class);
intent.putExtra("user_id", user.getObjectId());
startActivity(intent);
} else {
//Save failed
Log.d("", "User update error: " + e);
}
}
});
} else {
//Log.d("Kiem", "Error: " + e.getMessage());
}
}
});
}
});
//AlertDialog with list view to select ethnicity
public void alertEthnicityListView(View view){
final CharSequence[] ethics = {"Caucasian", "African American", "Asian", "Hispanic", "Middle-Eastern/Indian","Native American","Other"};
AlertDialog.Builder builder = new AlertDialog.Builder(AppearanceActivity.this);
builder.setTitle("Select your ethinicity");
builder.setItems(ethics, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int ethic) {
mEthnicity.setText(ethics[ethic]);
}
}).show();
}
//AlertDialog with list view to select hair color
public void alertHairListView(View view){
final CharSequence[] hairs = {"Brown", "Black", "Blonde", "Red", "Strawberry-Blonde", "Dirty-Blonde", "Dyed-Pink", "Dyed-Blue", "Dyed-Green", "Dyed-Purple", "Dyed-Red"};
AlertDialog.Builder builder = new AlertDialog.Builder(AppearanceActivity.this);
builder.setTitle("Select your hair color");
builder.setItems(hairs, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int hair) {
mHairColor.setText(hairs[hair]);
}
}).show();
}
//AlertDialog with list view to select eye color
public void alertEyeListView(View view){
final CharSequence[] eyes = {"Green", "Blue", "Hazel", "Brown", "Amber", "Other"};
AlertDialog.Builder builder = new AlertDialog.Builder(AppearanceActivity.this);
builder.setTitle("Select your eye color");
builder.setItems(eyes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int eye) {
mEyeColor.setText(eyes[eye]);
}
}).show();
}
//AlertDialog with list view to select gender
public void alertGenderListView(View view){
final CharSequence[] genders = {"Male", "Female"};
AlertDialog.Builder builder = new AlertDialog.Builder(AppearanceActivity.this);
builder.setTitle("Select your gender");
builder.setItems(genders, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int gender) {
mGender.setText(genders[gender]);
}
}).show();
}
//AlertDialog with list view to select birthday
Calendar myCalendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel();
}
};
private void updateLabel() {
String myFormat = "MM/dd/yy"; //In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
mBirthday.setText(sdf.format(myCalendar.getTime()));
}
}
public class PinsActivity extends Activity {
protected EditText mPassword;
protected EditText mConfirmPassword;
protected Button mRegisterButton;
protected EditText mPin;
protected EditText mFakePin;
String userId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pins);
//Receiving
Intent intent = getIntent();
//assigns data that was passed from previous activity.
userId = intent.getExtras().getString("user_id");
Log.d("Kiem2", "userID is: " + userId);
//sets variables to their respective xml elements.
mPassword = (EditText)findViewById(R.id.passwordEditText);
mConfirmPassword = (EditText)findViewById(R.id.confirmPasswordEditText);
mRegisterButton = (Button)findViewById(R.id.registerButton);
mPin = (EditText)findViewById(R.id.pinEditText);
mFakePin = (EditText)findViewById(R.id.fakePinEditText);
//Force soft keyboard to appear for user to type in password and confirm password
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mPassword, InputMethodManager.SHOW_IMPLICIT);
imm.showSoftInput(mConfirmPassword, InputMethodManager.SHOW_IMPLICIT);
//Listen to Register Button to click
mRegisterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Kiem3", "userID is: " + userId);
signup();
}
});
}
private void signup(){
//get values for password, confirm password, pin, fake pin fields and convert them to strings
final String password = mPassword.getText().toString();
final String confirmPassword = mConfirmPassword.getText().toString();
final String pin = mPin.getText().toString().trim();
final String fakePin = mFakePin.getText().toString().trim();
Log.d("Value of fakepin ", "is: " + fakePin);
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("objectId", userId);
// Execute the query to find the object with ID
query.getInBackground(userId, new GetCallback<ParseUser>() {
public void done(final ParseUser user, ParseException e) {
if (e == null) {
user.put("password", password);
user.put("pin", pin);
user.put("fakePin", fakePin);
user.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
// Saved successfully.
//Passing user object to AppearanceActivity and take user to appearance register page
Intent intent = new Intent(PinsActivity.this, MainActivity.class);
intent.putExtra("user_id", user.getObjectId());
startActivity(intent);
} else {
// The save failed.
Log.d("", "User update error: " + e);
}
}
});
Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_LONG).show();
} else {
//Log.d("Kiem", "Error: " + e.getMessage());
}
}
});
//Check if password and confirm password fields are not blank and that they're matched
boolean validationError = false;
StringBuilder validationErrorMessage = new StringBuilder(getString(R.string.error_intro));
if (password.length() == 0) {
if (validationError) {
validationErrorMessage.append(getString(R.string.error_join));
}
validationError = true;
validationErrorMessage.append(getString(R.string.error_blank_password));
}
if (!password.equals(confirmPassword)) {
if (validationError) {
validationErrorMessage.append(getString(R.string.error_join));
}
validationError = true;
validationErrorMessage.append(getString(R.string.error_mismatched_passwords));
}
validationErrorMessage.append(getString(R.string.error_end));
//Append validationErrorMessage with the appropriate error strings as well as set validationError as errors are detected
if (validationError) {
Toast.makeText(PinsActivity.this, validationErrorMessage.toString(), Toast.LENGTH_LONG).show();
return;
}
}
}
公共类外观活动扩展活动{
受保护的编辑性;
受保护的文本重;
受保护的文本重量;
受保护的编辑文本颜色;
受保护的编辑文本颜色;
受保护的编辑文本日;
受保护的编辑文本管理器;
保护按钮MnExtPageButtonNoAppearance;
字符串用户标识;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_外观);
//接收
Intent=getIntent();
//分配从上一个活动传递的数据。
userId=intent.getExtras().getString(“用户id”);
Log.d(“Kiem”,“userID是:”+userID);
//将变量设置为其各自的xml元素。
mEthnicity=(EditText)findViewById(R.id.ethnicityEditText);
mHeight=(EditText)findViewById(R.id.heightNumberPicker);
mWeight=(EditText)findViewById(R.id.weightEditText);
mHairColor=(EditText)findViewById(R.id.hairEditText);
mEyeColor=(EditText)findViewById(R.id.eyeEditText);
mBirthday=(EditText)findViewById(R.id.birthdayDatePicker);
mGender=(EditText)findViewById(R.id.genderEditText);
MnExtPageButtonNoAppearance=(按钮)findViewById(R.id.nextPageButtonNoAppearance);
//单击“收听下一页”按钮
MnExtPageButtonNoAppearance.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//获取种族、身高、体重、头发颜色、眼睛颜色、生日、性别,并将其隐藏到字符串中
最后一个字符串=mEthnicity.getText().toString().trim();
最终字符串高度=mHeight.getText().toString().trim();
最终字符串重量=mWeight.getText().toString().trim();
最终字符串hairColor=mHairColor.getText().toString().trim();
最后一个字符串eyeColor=mEyeColor.getText().toString().trim();
String birthday=mBirthday.getText().toString().trim();
最终字符串性别=mGender.getText().toString().trim();
ParseQuery=ParseUser.getQuery();
query.whereEqualTo(“objectId”,userId);
//执行查询以查找ID为的对象
getInBackground(userId,newgetcallback(){
public void done(最终ParseUser用户,parsee异常){
如果(e==null){
用户输入(“种族”,种族);
用户输入(“hairColor”,hairColor);
用户输入(“eyeColor”,eyeColor);
user.put(“性别”,性别);
用户输入(“高度”,高度);
用户输入(“重量”,重量);
user.saveInBackground(新的SaveCallback(){
@凌驾
公共作废完成(Parsee异常){
如果(e==null){
//成功保存
//将用户对象传递给PinsActivity并将用户带到Pins注册页
意向意向=新意向(AppearanceActivity.this、PinsActivity.class);
intent.putExtra(“user_id”,user.getObjectId());
星触觉(意向);
}否则{
//保存失败
Log.d(“,”用户更新错误:“+e”);
}
}
});
}否则{
//Log.d(“Kiem”,“Error:+e.getMessage());
}
}
});
}
});
//带有列表视图的AlertDialog可选择种族
public void AlerthMinicityListView(视图){
最终字符顺序[]伦理={“高加索人”、“非裔美国人”、“亚洲人”、“西班牙人”、“中东/印度人”、“印第安人”、“其他人”};
AlertDialog.Builder=新建AlertDialog.Builder(AppearanceActivity.this);
builder.setTitle(“选择您的ethinicity”);
setItems(道德规范,新的DialogInterface.OnClickListener(){
public void onClick(对话框接口对话框,int){
mEthnicity.setText(伦理[伦理]);
}
}).show();
}
//使用列表视图选择头发颜色的AlertDialog
公共void alertHairListView(视图){
最终CharSequence[]头发={“棕色”、“黑色”、“金发”、“红色”、“草莓色金发”、“脏金发”、“染成粉红色”、“染成蓝色”、“染成绿色”、“染成紫色”、“染成红色”};
AlertDialog.Builder=新建AlertDialog.Builder(AppearanceActivity.this);
builder.setTitle(“选择您的头发颜色”);
setItems(头发,新的DialogInterface.OnClickListener(){
P