我在我当前的应用程序中遇到问题,该应用程序包含跟随/关注系统,当我查看用户profil时,如果我已经关注此用户,我想要检索信息。这是我的代码
private class CheckinIfFollowing extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//preexcution
}
@Override
protected Void doInBackground(Void... params) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Follow");
query.whereEqualTo("from", ParseUser.getCurrentUser());
query.whereEqualTo("to", userId);
query.getFirstInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if(e==null){
Toast.makeText(UserProfil.this, "blue", Toast.LENGTH_SHORT).show();
//btn_follow.setButtonColor(getResources().getColor(R.color.bleu));
}else{
if(e.getCode() == ParseException.OBJECT_NOT_FOUND)
{
Toast.makeText(UserProfil.this, "pink", Toast.LENGTH_SHORT).show();
//btn_follow.setButtonColor(getResources().getColor(R.color.pink));
}
else
{
//unknown error, debug
}
}
}
});
return null;
}
@Override
protected void onPostExecute(Void result) {
// followingButton(AlreadyFollowing);
// btn_follow.setClickable(true);
}
}
我正在执行AsyncTask但屏幕上没有显示任何内容。
顺便说一句,parse.com中Follow类的“from”和“to”列是指向_User的指针。
答案 0 :(得分:0)
首先(与您的问题没有直接关系,只是一个观察者):如果您使用<something>InBackground
查询方法,则不必放它位于AsyncTask
内。它已经在后台执行了。在您的情况下,您基本上(在这里简化一点)从异步任务执行异步任务。
虽然您没有说明userId
对象中存储的内容,但我假设(基于它的名称)它是{{ 1}} objectId
个对象和不一个ParseUser
个对象本身。我相信这是你的问题的原因。这条线确切地说:
ParseUser
你说:
来自&#34;来自&#34;和&#34;到&#34; parse.com中Follow类的列是 指向_User的指针。
如果您要将query.whereEqualTo("to", userId);
存储到另一个Pointer
,如果您在查询中使用此字段,则可能应该传递此类型的对象(并且不是 ParseObject
- objectId
)。因此,在您的情况下,您应该传递String
的实例而不是ParseUser
。
您可以使用objectId
ParseObject
方法创建可用于查询的对象(objectId
)。