繁体   English   中英

从内部类中返回类型为void的重写方法返回

[英]Return from an over ridden method of return type void in an inner class

我正在尝试在Android Studio中开发一个应用程序。 我陷入这种情况。 我正在使用AsyncHttp客户端从MySQL数据库获取表名称的列表。 我正在从UI活动中调用以下函数以填充Spinner中的值。 但是我无法返回这些值。该值是在内部类中以及在其返回类型为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活动中创建一个静态字段,制作一个回调函数,该函数将bytes作为参数并将静态字段分配给bytes参数,然后从onSuceed方法调用它。 但是这条路看起来很丑。 有没有更简单的方法?

我是Android编程的新手,请帮忙。

而不是扩展使用继承:

public class fetchAvailableLocationsClass implements AsyncHttpResponseHandler {

    public void fetchAvailableLocations() {
        AsyncHttpClient httpClient = new AsyncHttpClient();
        RequestParams requestParams = new RequestParams();

        String _URL = ""; // Enter URL here

        byte[] retreivedBytes;

        httpClient.post(_URL, requestParams, responseHandler, this);


        @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
        }

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM