2015-02-17 57 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