我正在尝试打开资产文件夹中的文件。但是使用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
}
}
答案 0 :(得分:6)
我正在尝试打开资产文件夹中的文件。但是使用getAssets()会给出上面给出的错误。
getAssets()
是Context
上的一种方法。
我知道我必须从另一个活动传递上下文,但我不能这样做,因为另一个错误来了 - “ClassName类型的onCreate(SQLiteDatabase,Context)方法必须覆盖或实现超类型方法”。
由于您拒绝粘贴源代码,因此很难为您提供帮助。
ClassName不是一个活动,它只是一个类
更具体地说,它是SQLiteOpenHelper
。
所以如果没有从另一个活动传递上下文,getAssets()就无法工作。
SQLiteOpenHelper
会将Context
传递给其构造函数,您需要覆盖它。
除此之外,如果您的目标是使用您的应用please use SQLiteAssetHelper
打包数据库,因为它解决了这个问题。
答案 1 :(得分:5)
怎么样:
InputStream is = getActivity().getAssets().open("file1.txt");
答案 2 :(得分:4)
使用getContext()
方法。设置getContext().getAssets()
。我希望它能运作。实际上 getAssets()是Context上的一个方法。
有关详细信息,请访问Here