我目前正在处理我的应用的用户个人资料部分,我想使用该用户的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);
}
答案 0 :(得分:3)
一个非常常见的错误。 “User”类是一个内部类,因此您必须以不同方式查询它:
ParseQuery<ParseUser> query = ParseUser.getQuery();
同样适用于“角色”和“安装”类。