如何在不传递上下文的情况下从另一个类中调用方法?

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编程还比较新,不太理解上下文的概念。如果您能提供任何帮助,将不胜感激!

尽管这个问题比较老,但更好的讨论和更清晰的答案正在这个重复的问题上进行:https://dev59.com/OWsz5IYBdhLWcg3wxq4V - tir38
2个回答

7
创建一个继承Application的类,并在项目中声明它(也必须在清单文件中声明)。在这个应用程序中,创建一个…
private static MyApplication app

在 onCreate() 中将其分配给该字段。
app = this;

并使其变得更好,并完成一个
public static MyApplication get()

在 IT 技术中,当您需要一个 Context 时,可以使用以下方法:

MyApplication.get()

1
我猜getApplicationContext()是另一种实现相同功能的方式。 - Rakesh
使用getApplicationContext()。 - Nitin Bansal

2
关于上下文的几个提示:
  1. 通过 getContext() 获取视图中的上下文,并将其传递给 getContentResolver(context)

  2. 使用应用程序上下文方法,如 @apps 所述。

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


谢谢您的建议。通过您的建议和更多的阅读,我已经学到了上下文处理对于内存管理是多么关键。 - Josh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接