代码之家  ›  专栏  ›  技术社区  ›  Josh

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

  •  2
  • Josh  · 技术社区  · 14 年前

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

    以下是我的代码部分:

    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 回复  |  直到 14 年前
        1
  •  7
  •   apps    14 年前

    创建扩展的类 Application 对于您的项目(您也必须在清单中声明它),在应用程序中

    private static MyApplication app
    

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

    app = this;
    

    做一个

    public static MyApplication get()
    

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

    MyApplication.get()
    
        2
  •  2
  •   Peter Knego    14 年前

    关于上下文的一些提示:

    1. 通过查看获取上下文 getContext() 并把它传递给 getContentResolver(context) .

    2. 使用@apps这里描述的应用程序上下文方法。

    3. 不要将上下文存储在活动或视图中。这导致 memory leaks .