我試圖在Android Studio中開發應用程序。我陷入這種情況。 我正在使用AsyncHttp客戶端從MySQL數據庫中獲取表名列表。我從UI活動調用下面的函數來填充Spinner中的值。但是我無法返回values.The值在內部類中獲取,並在返回類型爲void的重寫方法中進行檢索。請查看代碼以進一步瞭解。返回內部類中返回類型void的過度氾濫方法
public void fetchAvailableLocations()
{
AsyncHttpClient httpClient = new AsyncHttpClient();
RequestParams requestParams = new RequestParams();
String _URL = ""; // Enter URL here
byte[] retreivedBytes;
httpClient.post(_URL, requestParams, responseHandler, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int i, cz.msebera.android.httpclient.Header[] headers, byte[] bytes) {
retrievedBytes = bytes; //This is where I'm stuck
}
@Override
public void onFailure(int i, cz.msebera.android.httpclient.Header[] headers, byte[] bytes, Throwable throwable) {
//make toasts
}
});
}
一個解決方案我想到的是在UI活動創建一個靜態場,做一個回調函數,它接受字節作爲參數,並將靜態字段的字節參數,然後從調用它onSuceed方法。但是這條路線看起來很醜。有一種更簡單的方法嗎?
我有點新的Android編程,所以請幫助。
是的,有。使用[EventBus](https://github.com/greenrobot/EventBus)在'onSuccess'中發佈一個帶有所包含數據的事件,只需在需要的地方傾聽該事件,並根據傳遞的數據做任何事情。 – Vucko
@Vucko。感謝您的解決方案。但是這個方法(我們稱之爲B)由另一個onClick方法調用(我們稱之爲A)。如果我使用它,是不是基本上調用另一個方法(suscriber方法,比如說C),它必須將值存儲在一個靜態字段中,這樣方法A可以在控制從方法B返回時使用它?和我上面寫的其他解決方案不一樣嗎? 如果我錯了,請糾正我。這意味着我不明白這是如何工作的。 – Akhil