簡體   English   中英

Android-ParseObject ID為空

[英]Android - ParseObject Id is Null

誰能幫我解決這個問題。 我有2個活動供用戶注冊他們的個人資料。 我創建了一個ParseObject用戶,然后將此用戶對象傳遞給第二個活動。 我使用user.getObjectId()獲取用戶對象的ID,但是ID始終為null。 我想知道是否有人可以幫助我找到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);
        }
    });
}
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);
                }
            }
        });   

我不確定這是否可以解決您的問題,但是我認為您需要使用ParseUser來處理用戶,而不是ParseObject

首先使用Parse時的一些一般性說明:

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

應該發生在Application的OnCreate掛鈎中,而不是Activity實例中。

ParseObject#saveInBackground是異步的。 因此,它使得等待objectId更新無用。 您可以為保存調用提供回調函數,保存完成后將調用該函數!

盡管如此,我非常確定您要注冊一個用戶(因為RegisterActivity的名稱表明了這一點),所以為什么不簡單使用以下示例:

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("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
    }
  }
});

在編寫可能已經被小心處理的代碼之前,請務必先閱讀官方文檔 特別是對於您的用例,您可能會發現很有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM