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 に答える