我正在尝试做一个推特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);
}
}
我做错了什么?你们需要看到更多代码吗?
谢谢。
答案 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;
}
它应该像这样工作,希望它有所帮助!