我目前正在尝试从实用程序类调用一个方法,该方法将引用为此实用程序方法创建的新游标。不幸的是,我的新类不会让我在没有上下文的情况下创建游标。我已尝试过多种从调用活动传递上下文的方法,但在大多数情况下都会获得空指针异常。
以下是我的代码部分:
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编程相当新,并且不完全理解上下文的概念。非常感谢您提供的任何帮助!
答案 0 :(得分:7)
为你的项目创建一个扩展Application的类(你必须在Manifest中声明它),在Application make a
中private static MyApplication app
在它的onCreate()中将其分配给字段
app = this;
并制作
public static MyApplication get()
在里面。当您需要上下文时,您可以使用
MyApplication.get()
答案 1 :(得分:2)
关于Context的一些提示:
通过getContext()
查看相关内容并将其传递给getContentResolver(context)
。
使用@apps。
不要在Activity或Views中存储上下文。这导致memory leaks。