2015-02-17 58 views
0

任何人都可以請幫我解決這個問題。我有2個活動供用戶註冊他們的個人資料。我創建了一個ParseObject用戶,然後將此用戶對象傳遞給第二個活動。我使用user.getObjectId()來獲取用戶對象的ID,但ID始終爲空。我想知道是否有人能幫我找到ParseObject的用戶ID。請參閱下面的代碼。謝謝Android - ParseObject ID爲空

public class RegisterActivity extends Activity { 

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, "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXX"); 

    //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(); 

      ParseObject user = new ParseObject("User"); 

      //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); 

      user.saveInBackground(); 

      //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); 
     } 
    }); 
} 
+0

看看我的回答 – Hades 2015-02-18 02:12:31

+0

感謝@Hades您的解決方案的偉大工程:) – 2015-02-19 14:56:28

回答

1
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 ParseObject user = new ParseObject("User"); 

     //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); 

     user.saveInBackground(new SaveCallback() { 
      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 { 
        // The save failed. 
        Log.d("", "User update error: " + e); 
       } 
      } 
     }); 
+0

感謝@Hades您的解決方案效果超棒:) – 2015-02-19 14:52:33

0

我不知道肯定這是否會解決您的問題,但我認爲你需要使用ParseUser與用戶,而不是ParseObject工作。

0

先用解析工作時,一些一般性意見:

Parse.initialize(this, "XXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXX");

應該在你的Application沒有一個Activity實例的OnCreate鉤發生。

ParseObject#saveInBackground是異步的。因此它呈現等待objectId更新無用。 您可以爲保存呼叫提供回叫功能,保存完成後會調用該功能!

儘管如此我敢肯定你想註冊用戶(因爲RegisterActivity的名稱表示),那麼你爲什麼不乾脆用這個例子:

ParseUser user = new ParseUser(); 
user.setUsername("my name"); 
user.setPassword("my pass"); 
user.setEmail("[email protected]"); 

// other fields can be set just like with ParseObject 
user.put("phone", "650-253-0000"); 

user.signUpInBackground(new SignUpCallback() { 
    public void done(ParseException e) { 
    if (e == null) { 
     // Hooray! Let them use the app now. 
    } else { 
     // Sign up didn't succeed. Look at the ParseException 
     // to figure out what went wrong 
    } 
    } 
}); 

也請在開始編碼之前,請務必閱讀the official docs。 尤其對於您的用例,您可能會發現this有用!

+0

感謝@throws_exceptions_at_you。我喜歡你的暱稱:)我閱讀官方文檔,但我的應用程序有不同的設計。我的應用程序有3個活動供用戶在將數據發送給Parse之前填寫其個人資料信息,而不是僅使用1個活動來註冊用戶。這需要我在不同的活動之間傳遞用戶對象。 – 2015-02-19 03:36:37

+0

謝謝。你應該儘可能使用碎片。這會照顧你的問題。 – 2015-02-19 13:04:26