我尝试创建一个按用户名称获取用户的方法。我正在使用解析查询。这是我的方法:
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.
}
那么如何从查询回调中获取并返回搜索结果? 请帮忙。感谢。
答案 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()
响应的情况下返回结果