我想向此语句返回一个字符串:StringreplyUsername = queryUsernameById(objectId);
查询方法如下:
public String queryUsernameById(String objectid) {
final String[] username = {null};
ParseQuery<ParseUser> userQuery = ParseUser.getQuery();
userQuery.whereContains(ParseConstants.KEY_OBJECT_ID, objectid);
userQuery.getFirstInBackground((user, e) -> {
// We found messages!
if (e == null) {
username[0] = user.getUsername();
} else {
e.printStackTrace();
}
});
return username[0];
}
当我显示字符串时,它返回为空。我该如何解决这个问题?
最佳答案
您还没有显示代码的其余部分,即您实际使用该值的位置,因此很难确定,但我的猜测是异步性在这里让您感到困惑。查询在后台运行,因此如果您使用的该值距离函数调用太近,则查询实际上尚未返回。您应该在完成处理程序中将值分配给标签,或者使用等待更新的键值监听器来更新标签。
另外,还有一个专门用于通过Id获取对象的查询方法,而不是添加objectId作为查询约束。 query.get(objectId)
或类似的东西,尽管我对 Java SDK 不太熟悉。它的优点是为不存在的对象返回 101 错误,而不是带有成功回调的空数组/对象。
关于java - 从 ParseQuery 方法返回的字符串为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45660444/