3

我目前正在尝试从实用程序类中调用一个方法,该方法将引用为此实用程序方法创建的新游标。不幸的是,我的新课程不允许我在没有上下文的情况下创建光标。我尝试了多种从调用活动传递上下文的方法,但在大多数情况下都会出现空指针异常。

这是我的代码的一部分:

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

为您的项目创建一个扩展Application的类(您也必须在 Manifest 中声明它),在 Application 中创建一个

private static MyApplication app

在它的 onCreate() 中将其分配给该字段

app = this;

并制作一个

public static MyApplication get()

在里面。当您需要上下文时,您可以使用

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

关于上下文的一些提示:

  1. 在您的 View 中获取 Context viagetContext()并将其传递给getContentResolver(context).

  2. 使用@apps 在此处描述的应用程序上下文方法。

  3. 不要在 Activity 或 Views 中存储上下文。这会导致内存泄漏

于 2010-11-14T14:57:07.763 回答