如何从另一个类调用方法而不传递上下文?

时间:2010-11-14 13:45:56

标签: android android-context

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

以下是我的代码部分:

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编程相当新,并且不完全理解上下文的概念。非常感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:7)

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

private static MyApplication app

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

app = this;

并制作

public static MyApplication get()

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

MyApplication.get()

答案 1 :(得分:2)

关于Context的一些提示:

  1. 通过getContext()查看相关内容并将其传递给getContentResolver(context)

  2. 使用@apps。

  3. 所述的应用程序上下文方法
  4. 不要在Activity或Views中存储上下文。这导致memory leaks