1

我正在尝试在 twitter oauth 活动中实现 asynctask,但出现 2 个错误。我希望 asynctask 返回一个使用者对象。

这是我的代码:

class getCommonsHttpConsumer extends AsyncTask<Void, Void, Void> {

@Override
protected OAuthConsumer doInBackground() {

    return new CommonsHttpOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
}
}

我收到两个错误

  1. getCommonsHttpConsumer:getCommonsHttpConsumer 类型必须实现继承的抽象方法 AsyncTask.doInBackground(Void...)

  2. doInBackground():getCommonsHttpConsumer 类型的方法 doInBackground() 必须覆盖或实现超类型方法

我究竟做错了什么?

4

3 回答 3

1

如果您查看AsyncTask的文档,您会看到:-

AsyncTask<Params, Progress, Result>

既然,你已经给了你AsyncTask<Void, Void, Void>的,你的

protected OAuthConsumer doInBackground()

正在抛出这些错误。

将返回类型更改doInBackground()为 anyVoidAsyncTasktoAsyncTask<Void, Void, OAuthConsumer>以修复它。

于 2013-02-26T04:17:40.433 回答
1

阅读编译器告诉您的内容并熟悉文档。您需要更改类声明上的参数化以声明 doInBackground 将返回一个OAuthConsumerAlso have doInBackground()accept in Void...(varargs):

class getCommonsHttpConsumer extends AsyncTask<Void, Void, OAuthConsumer> {

@Override 
protected OAuthConsumer doInBackground(Void... params) {

也可以在这里找到一个很好的解释(除了文档)。

于 2013-02-26T04:18:35.833 回答
0

这是做什么:

class getCommonsHttpConsumer extends AsyncTask<Void, Void, OAuthConsumer> {

    @Override
    protected OAuthConsumer doInBackground() {

        return new CommonsHttpOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
    }

    @Override
    protected void onPostExecute(OAuthConsumer result) {
        // process result
    }
}

检查文档以获取更多详细信息。

于 2013-02-26T04:24:40.613 回答