コンテキストを通過せずに別のクラスからメソッドを呼び出す方法は?
-
09-10-2019 - |
質問
現在、このユーティリティメソッド用に作成された新しいカーソルを参照するユーティリティクラスからメソッドを呼び出そうとしています。残念ながら、私の新しいクラスでは、コンテキストなしでカーソルを作成することはできません。私は呼び出しアクティビティからコンテキストを渡す多くの方法を試しましたが、ほとんどの場合、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のプログラミングにかなり慣れておらず、コンテキストの概念を完全に理解していません。あなたが提供できる支援は大歓迎です!
解決
拡張するクラスを作成します 応用 あなたのプロジェクトのために(あなたはそれをマニフェストで宣言する必要があります)、アプリケーションで
private static MyApplication app
oncreate()でフィールドに割り当てます
app = this;
そして、
public static MyApplication get()
初期化。コンテキストが必要な場合は、aを使用できます
MyApplication.get()
他のヒント
コンテキストに関するいくつかのヒント:
あなたのコンテキストを取得してください
getContext()
そしてそれを渡しますgetContentResolver(context)
.@Appsで説明されているように、アプリケーション - コンテキストアプローチを使用します。
アクティビティやビュー内にコンテキストを保存しないでください。これはにつながります メモリリーク.
所属していません StackOverflow