【发布时间】:2017-05-19 10:07:18
【问题描述】:
我正在使用this 库来从服务器获取数据。数据在服务器中解码为JSONObject。我创建的方法将调用 url 并返回 mysql 表中的行数。
该方法正在运行,但是我无法从我的方法中正确返回值:
ParseLevels.java
static public int countLevels() {
final int[] count = {0};
AndroidNetworking.get("https://example.com/gameLevels.php?option=count")
.setPriority(Priority.LOW)
.build()
.getAsJSONObject(new JSONObjectRequestListener() {
@Override
public void onResponse(JSONObject response) {
// responce is {count:20}
try {
count[0] = response.getInt("count"); // this is getting the value of 20
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("responce_app", String.valueOf(count[0]));
}
@Override
public void onError(ANError error) {
// handle error
Log.d("responce_app", String.valueOf(error)); //Logs out 20
}
});
return count[0]; // return always 0
}
当我从我的MainActivity 打来电话时
Log.d("responce_app", String.valueOf(ParseLevels.countLevels()));
该方法总是返回 0。
我知道返回是在获取 jsonObject 之前触发的,但是如何等待方法获取 jsonObject 并在返回值之后?
在 iOS 中我使用类似的东西:
static func getLevels(feedsArray: (levelsCount : [Int]) -> Void) {
}
如何将其转换为 Java?
【问题讨论】: