Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-Parse.com-从查询回调返回对象_Android_Parse Platform - Fatal编程技术网

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

Android-Parse.com-从查询回调返回对象,android,parse-platform,Android,Parse Platform,我试图创建一个通过用户名获取用户的方法。我正在使用解析查询。以下是我的方法: public ParseUser getUserByName(String name){ ParseUser user; ParseQuery<ParseUser> query = ParseQuery.getQuery("_User"); query.whereEqualTo("username", name); query.getFirstInBackground(ne

我试图创建一个通过用户名获取用户的方法。我正在使用解析查询。以下是我的方法:

 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;
}
因此,我无法将搜索结果分配给用户:

else {
          user= result; // Can't assign to user, because it's final.
     }
那么如何从查询回调中获取并返回搜索结果呢? 请帮忙。谢谢。

试试这个

 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;
}
为什么
getFirst()

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

为什么
findInBackground()

从中检索满足此查询的ParseObject列表 后台线程中的源


当我们使用
findInBackground()时
您无法返回任何结果,因为您的方法将返回结果,而无需等待
done()
response

成功!非常感谢你的帮助。。。。顺便说一下。我看到您使用的是query.getFirst()而不是query.getFirstInBackground()。你能告诉我他们之间的区别吗。如果我想使用query.getFirstInBackground(),我该怎么做?再次感谢你的热情帮助。。。!
 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){

}