0

Twitter Androidアプリケーションを実行しようとしています。私はまだログインに取り組んでいます。そのため、友人から使用を勧められた後、asynctaskloader を使用しています。次の行で null ポインター例外が発生すると思います。

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 メソッドに配置します。新しいローダーを開始することをアクティビティに通知するだけです。

その後、ローダーが作成/終了したことを通知するコールバックを実装する必要があります。このコールバックは、3 番目のパラメーター (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 に答える