2011-12-10 6 views
24

У меня есть простая функция чтения txt-файла.getAssets(); из другого класса

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

Работает от моего основного вида деятельности. Но если я использую один и тот же код в отдельном классе, getAssets() просто возвращает null/crash.

Я не могу найти, почему это работает только из основного класса.

Любые идеи?

Решение:

subClass.ReadSettings(getApplicationContext()); 

public String[] ReadSettings(Context myContext) { 
} 

ответ

51

Ваш другой класс также Activity? getAssets() - это метод контекста. Если ваш класс не является активным, вам необходимо передать ему контекст, а затем вызвать getAssets.

Как так:

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

Спасибо! Это решило! Пройдя контекст. – jonassvensson

+0

Нет проблем! Не могли бы вы выбрать его ответ как правильный ответ, нажав галочку? Это исключает вопрос из списка «Без ответа» и облегчает поиск другими людьми с одинаковой проблемой правильного ответа. –

Смежные вопросы