web-dev-qa-db-ja.com

getAssets();別のクラスから

単純なtxtファイル関数の読み取りがあります。

AssetManager mngr = getAssets();
InputStream is = mngr.open("textdb.txt");

私の主な活動から機能します。しかし、別のクラスで同じコードを使用すると、getAssets()はnull/crashを返すだけです。

メインクラスからしか機能しない理由を見つけることができません。

何か案は?

解決策:

subClass.ReadSettings(getApplicationContext());

public String[] ReadSettings(Context myContext) {
}
28
jonassvensson

他のクラスもActivityですか? getAssets()はContextのメソッドです。クラスがアクティビティでない場合は、コンテキストをそのクラスに渡し、その上でgetAssetsを呼び出す必要があります。

そのようです:

public myClass(Context myContext) {
    AssetManager mngr = myContext.getAssets();
    InputStream is = mngr.open("textdb.txt");
}
59