0

我正在尝试做一个 twitter android 应用程序。我仍在处理登录。所以我在朋友建议我使用 asynctaskloader 之后使用它。我相信我在这一行得到了一个空指针异常:

this.consumer = (OAuthConsumer) new getCommonsHttpOAuthConsumer(context);

这是我的 asynctaskloader 类:

class getCommonsHttpOAuthConsumer extends AsyncTaskLoader{

public getCommonsHttpOAuthConsumer(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

@Override
public OAuthConsumer loadInBackground() {
    // TODO Auto-generated method stub

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

}

我究竟做错了什么?你们需要查看更多代码吗?谢谢你。

4

1 回答 1

0

您没有正确使用加载器类。

您需要使用以下行调用 LoaderManager:

    getLoaderManager().initLoader(ID_FOR_THIS_LOADER, DATA_BUNDLE, CALLBACK);

如果你在一个 Fragment 中你需要在开头添加 getActivity(),如果你使用的是 android.support.v4.jar,你将调用 getSupportLoaderManager()。

将此行放在 onCreate 或 onResume 方法中。它只会通知您的活动您要启动新的加载程序。

之后,您需要实现通知您的加载程序已创建/完成的回调。此回调由您指定为第三个参数 (CALLBACK) 的对象实现。它可以是一个活动,一个片段......你会在网上找到语法。

这是它的样子:

    // Callback called by your Activity
    @Override
    public Loader<OAuthConsumer> onCreateLoader(int id, Bundle arg1) {
        loader = new getCommonsHttpOAuthConsumer();
        return loader;
            // After this method you're going in loadInBackground()
    }

    @Override
    public void onLoadFinished(Loader<OAuthConsumer> loader, OAuthConsumer pl) {
           // After loadInBackground() you arrive here, with your new object OAuthConsumer
           this.consumer = pl;
    }

它应该像这样工作,希望它有帮助!

于 2013-03-13T18:57:48.693 回答