我正在使用this庫來從服務器獲取數據。數據在服務器中解碼爲JSONObject
。我所做的方法將調用url並返回mysql
表中的行數。Android - 在繼續使用方法之前等待json獲取值
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呢?
謝謝。我有創建事件監聽器使用接口:'公共接口CountLevelCallback {0} {0} {0} }' – SNos
@SNos:好的,如果它工作的很好。 –
是啊,工作很好 – SNos