我尝试创建一种通过用户名获取用户的方法。我正在使用解析查询。这是我的方法:
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;
}
它编译错误,并表示:“变量'user'需要声明为final”。但是,如果我声明:
final ParseUser 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;
}
使用
ParseUser parseUser = getUserByName("userName");
if(parseUser !=null){
}
为什么getFirst();
Retrieves a list of ParseObjects that satisfy this query from the source in UI or Main Thread
为什么findInBackground();
Retrieves a list of ParseObjects that satisfy this query from the source in a background thread.
当我们使用 findInBackground();
时,您无法返回任何结果,因为您的方法将在不等待 done()
响应的情况下返回结果
关于Android - Parse.com - 从查询回调返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34378790/