android asynctaskloader上的空指针异常

时间:2013-03-12 21:36:01

标签: nullpointerexception asynctaskloader

我正在尝试做一个推特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);
}

}
我做错了什么?你们需要看到更多代码吗? 谢谢。

1 个答案:

答案 0 :(得分: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;
    }

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