3

我正在尝试打开资产文件夹中的文件。但是使用 getAssets() 会给出上面给出的错误。我知道我必须从另一个活动中传递上下文,但是我也不能这样做,因为接下来会出现另一个错误——“ClassName 类型的 onCreate(SQLiteDatabase, Context) 方法必须覆盖或实现超类型方法”。所以我被困住了。有没有更好的方法打开该文件?这是行:

InputStream is = getAssets().open("file1.txt");

*注意:ClassName 不是一个活动,它只是一个类,所以 getAssets() 不能在没有从另一个活动传递上下文的情况下工作。

编辑:这是类和 onCreate 声明:

public class DatabaseHandler extends SQLiteOpenHelper {
@Override
public void onCreate(SQLiteDatabase db) {//some stuff
InputStream is = getAssets().open("file1.txt");
//more stuff
}
}
4

3 回答 3

6

我正在尝试打开资产文件夹中的文件。但是使用 getAssets() 会给出上面给出的错误。

getAssets()是一种方法Context

我知道我必须从另一个活动中传递上下文,但是我也不能这样做,因为接下来会出现另一个错误-“ClassName 类型的 onCreate(SQLiteDatabase, Context) 方法必须覆盖或实现超类型方法”。

由于您拒绝粘贴发生这种情况的源代码,因此很难为您提供帮助。

ClassName 不是一个活动,它只是一个类

更具体地说,它是 的子类SQLiteOpenHelper

所以 getAssets() 如果不从另一个活动传递上下文就无法工作。

ASQLiteOpenHelper被传递Context给它的构造函数,你需要重写它。

除此之外,如果您的目标是在您的应用程序中打包数据库,请使用SQLiteAssetHelper,因为它已经解决了这个问题。

于 2013-03-23T11:51:23.687 回答
5

怎么样:

InputStream is = getActivity().getAssets().open("file1.txt");
于 2013-03-23T11:49:14.383 回答
4

使用getContext()方法。设置getContext().getAssets()。我希望它会起作用。实际上getAssets()是 Context 上的一种方法。有关更多详细信息,您可以访问这里

于 2015-03-27T09:27:38.063 回答