Android - Parse.com - 从查询回调中返回对象

时间:2015-12-20 07:20:55

标签: android parse-platform

我尝试创建一个按用户名称获取用户的方法。我正在使用解析查询。这是我的方法:

 public ParseUser getUserByName(String name){
    ParseUser user;
    ParseQuery<ParseUser> query = ParseQuery.getQuery("_User");
    query.whereEqualTo("username", name);
    query.getFirstInBackground(new GetCallback<ParseUser>() {
        public void done(ParseUser result, ParseException e) {
            if (result== null) {
                Log.d("user", "Get user failed.");
            } else {
                user= result; // Compile error here, said: "Variable 'user' need to be declared final"
            }
        }
    });
    return user;
}

它符合错误,并说:&#34;变量&#39;用户&#39;需要被宣布为最终&#34;。但是,如果我宣布:

final ParseUser user;

所以我无法将搜索结果分配给用户:

else {
          user= result; // Can't assign to user, because it's final.
     }

那么如何从查询回调中获取并返回搜索结果? 请帮忙。感谢。

1 个答案:

答案 0 :(得分:2)

试试这个

 public ParseUser getUserByName(String name){
    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereEqualTo("username", name);
    try {
        return query.getFirst();
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}

使用

ParseUser parseUser = getUserByName("userName");
if(parseUser !=null){

}

为什么getFirst();

  

从中检索满足此查询的ParseObjects列表   UI或主线程中的源代码

为什么findInBackground();

  

从中检索满足此查询的ParseObjects列表   来自后台线程。

当我们使用findInBackground();时,您无法返回任何结果,因为您的方法会在不等待done()响应的情况下返回结果