解析getInBackground不工作(使用ObjectID进行用户查询)

时间:2014-09-02 21:23:55

标签: android parse-platform

我目前正在处理我的应用的用户个人资料部分,我想使用该用户的objectId对特定用户对象运行查询。通过该查询,我希望从解析中获取用户信息(电子邮件,用户名,hometwown等)并将其显示在页面上。

解析文档推荐getInBackground方法,如下所示:

ParseQuery<ParseObject> query = ParseQuery.getQuery("MyClass");
 query.getInBackground(myId, new GetCallback<ParseObject>() {
     public void done(ParseObject object, ParseException e) {
         if (e == null) {
             objectWasRetrievedSuccessfully(object);
         } else {
             objectRetrievalFailed();
         }
     }
 }

使用这个,我想我会替换&#34; MyClass&#34;与&#34;用户&#34;因为我将在用户类中搜索输入的特定Id。但是,我每次都会收到异常并且查询失败。我的代码的副本在下面,作为一个例子,我试图提取&#34;家乡&#34;来自specefic用户的属性并将其设置为显示为textview。 mId等于从另一个活动传递的用户的特定对象ID。

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

    mHometownField = (TextView) findViewById(R.id.textView);

    mId = getIntent().getStringExtra(ParseConstants.KEY_ID);

    ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
    query.getInBackground(mId, new GetCallback<ParseObject>() {
        @Override
        public void done(ParseObject parseObject, com.parse.ParseException e) {
            if (e == null) {
                mHometown = parseObject.get(ParseConstants.KEY_HOMETOWN).toString();
            }
            else {
                Log.e(TAG, e.getMessage());
                AlertDialog.Builder builder = new  AlertDialog.Builder(FriendsProfileActivity.this);
                builder.setTitle(R.string.error_title)
                        .setMessage(e.getMessage())
                        .setPositiveButton(android.R.string.ok, null);
                AlertDialog dialog = builder.create();
                dialog.show();
            }
        }
    });

    mHometownField.setText(mHometown);

}

1 个答案:

答案 0 :(得分:3)

一个非常常见的错误。 “User”类是一个内部类,因此您必须以不同方式查询它:

ParseQuery<ParseUser> query = ParseUser.getQuery();

同样适用于“角色”和“安装”类。