3

現在、このユーティリティ メソッド用に作成された新しいカーソルを参照するユーティリティ クラスからメソッドを呼び出そうとしています。残念ながら、私の新しいクラスでは、コンテキストなしでカーソルを作成できません。呼び出し元のアクティビティからコンテキストを渡すさまざまな方法を試しましたが、ほとんどの場合、null ポインター例外が発生します。

これが私のコードの一部です:

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                        Tools.pickRandomItem();

                    }
});

ツールクラスでは:

     public static void pickRandomItem() {   

    Cursor cur = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, 
               null, null,MediaColumns.TITLE + " ASC");




}

上記のコードを使用すると、でエラーがスローされgetContentResolver()、コンテキストを渡すために行ったすべての試みが失敗しました。

私は Android のプログラミングにかなり慣れていないため、コンテキストの概念を完全には理解していません。あなたが提供できるどんな助けも大歓迎です!

4

2 に答える 2

7

プロジェクトのアプリケーションを拡張するクラスを作成し(マニフェストでも宣言する必要があります)、アプリケーションで

private static MyApplication app

その onCreate() で、それをフィールドに割り当てます

app = this;

そして作る

public static MyApplication get()

初期化。Context が必要な場合は、

MyApplication.get()
于 2010-11-14T13:54:51.550 に答える
2

コンテキストに関するいくつかのヒント:

  1. View で Context を取得しgetContext()、 に渡しgetContentResolver(context)ます。

  2. ここで @apps によって説明されているように、アプリケーション コンテキスト アプローチを使用します。

  3. アクティビティまたはビュー内にコンテキストを保存しないでください。これにより、メモリ リークが発生します。

于 2010-11-14T14:57:07.763 に答える