我正在创建一个Android应用程序,其中我通过制作doinbackground方法并将这些值分配给全局声明的变量来从服务器端获取数据。问题是我在oncreate方法中使用那些变量,它给我空值,因为doinbackground方法在oncreate中使用变量后完成。这可能是什么解决方案?
public void getProfileInfo() {
String currentUserId = ParseUser.getCurrentUser().getObjectId();
ParseQuery<ParseObject> query = ParseQuery
.getQuery(ParseConstants.KEY_USER_INFO);
query.whereEqualTo(ParseConstants.KEY_USER_ID_INFO, currentUserId);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException e) {
if (e == null) {
for (ParseObject thisUser : objects) {
name = thisUser
.getString(ParseConstants.TYPE_INFO_FULLNAME);
email = ParseUser.getCurrentUser().getEmail();
}
} else {
Log.d("Activity", "Error: " + e.getMessage());
}
}
});
}
我在使用变量名称和电子邮件之前在oncreate中调用此方法。我检查了名称和电子邮件的值。它给了我正确的价值观。
答案 0 :(得分:0)
听起来你有一些时间问题。
只是说明显而易见,你不能在后台线程上启动异步任务,然后在不知道任务完成的情况下盲目地使用结果。
完成任务需要触发结果的使用。
所以,无论你做什么来访问这些全局变量&#39;获得空值 - 不要在确定的时间(例如在onCreate中)执行此操作 - 在实际获得结果时执行此操作。
如果结果可能会在您当前尝试访问它们之前返回,请检查它们是否已经返回,如果有,请使用它们。如果他们没有,请等到他们回来。
我将把这项工作的实施留给读者&#34;