我试图在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