Java 无法解析GetResources(),为非活动类Android设置上下文

Java 无法解析GetResources(),为非活动类Android设置上下文,java,android,Java,Android,我在android项目中创建了DBHelper.java类。在OnCreate()方法中,我为数据库创建表,但我也希望向这些表插入行。因此,我创建了文件-script.sql,其中包含我的插入查询。一切都会很好,但我不能解决一个问题——上下文 这是我放在DBHelper类中的代码: private void executeScript() { InputStream inputStream = this.getResources().openRawResource(R.raw.sc

我在android项目中创建了DBHelper.java类。在OnCreate()方法中,我为数据库创建表,但我也希望向这些表插入行。因此,我创建了文件-script.sql,其中包含我的插入查询。一切都会很好,但我不能解决一个问题——上下文

这是我放在DBHelper类中的代码:

   private void executeScript()
{
    InputStream inputStream = this.getResources().openRawResource(R.raw.script); // I get error here.
    byte[] buffer = new byte[7844];
    String queries = "";
    try {
        inputStream.read(buffer);
        queries =  new String(buffer,"UTF-8");
    } catch (Exception e) {
        Log.e("Error", e.toString());
    }
    for (String query : queries.split(";")) {
        Log.e("Query", query);
    }

}
第行出现错误:this.getResources()。。。 我知道我不能用这个,但我能做什么来代替呢?
我知道这段代码只是显示日志,但我稍后会添加execSQL。

通过让调用方检索
R.raw.script
资源值,将脚本文本传递到
executeScript()

或者,将
Resources
传递到
executeScript()
,这样它就可以调用
openRawResource()


或者,将
上下文
传递到
executeScript()
,这样它就可以在
上下文
上调用
getResources()

我认为您基本上想要这个吗?我试过了,但有些错误我无法处理。也许还有另一种执行我的脚本的方法,我不需要使用Context。如果你想获得一个资源,你通常需要一个上下文。当您执行上述操作时,会出现哪些错误?我再试了一次,因为我在当前活动中编写了MyApplication类,所以出现了错误。这次我在我的项目中创建了一个新的MyApplication.java类,它似乎正在工作。我只是不确定这样的方法是好的解决方案。必须有更好的解决办法。无论如何,谢谢你,我已经试着解决这个问题两个小时了……我倾向于同意。如果可能的话,应该避免使用静态getter。理想情况下,您希望向下传播上下文,并将其作为参数传递给
void executeScript(Context-Context)
TLDR:dependency injection。我希望将脚本的所有文本保留在一个文件中,因为它会更大,我不希望将所有这些内容都放在代码中。将资源传递到executeScript是什么意思??你能把它写在我的代码里吗。非常感谢。