使用getAssets()给出错误“方法getAssets()未定义类型ClassName”?

时间:2013-03-23 11:13:24

标签: java android

我正在尝试打开资产文件夹中的文件。但是使用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
}
}

3 个答案:

答案 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