2010-11-07 3 views
1

Я определяю класс, который устанавливает атрибут Drawable в объекте. Проблема в том, что я не могу получить доступ к методу getResource().getDrawable(int resourceId), если у меня нет Context. То, что я должен был послать к этому классу экземпляр деятельности (назовем его «действовать»), а затем я сделал:Доступ к ресурсам Drawable из класса неконтекста

act.getResources().getDrawable(R.drawable.whellchair)

но, при выполнении этой линии он бросает NullPointerException.

Когда идея, как это сделать?

+5

"Действует" null или является "act.getResources()" null? – Juhani

+0

Эй, помощник! Вы только что дали критический намек! Я не проверял, что было нулевым, и оказалось, что это «действие». Я работаю с синглом, когда ставит линию не в том месте! Спасибо;) –

ответ

1

Я нашел проблему! Я использую одиночку, и я поставил линию с доступом к «акту» в статическом методе ... как дурак меня ...

Извини и спасибо Джухани за комментарий :)

0

Pass что контекст приложения к конструктору вашего класса. В основном классе приложения вы просто получаете контекст, вызывая метод getApplication(), если вам нужен контекст, знакомый с жизненным циклом, или getApplicationContext(), если вам нужен контекст, привязанный к текущему процессу.

Пример: конструктор

private Context ctx = getApplication(); 

... some code ... 

MyClass myClass = new MyClass(ctx); 

вашего класса, конечно, должен обрабатывать контекст соответствующим образом (то есть установки закрытого члена типа контекста к переданному значению), как это.

private Context ctx = null; 

public MyClass(ctx) { 
    this.ctx = ctx; 
} 

Тогда вы можете использовать контекст для всего, что вам нужно.

+0

класс является одноэлементным (так он сам себя инициализирует), и он не расширяет класс Activity для доступа к getApplication() или getApplicationContext() –

+0

Ну, класс не должен расширять Activity, чтобы получить корректный контекст (даже если бы он и вызвал getApplication(), он скорее всего не соответствовал бы неправильному контексту, так как вы хотите отображать материал и чаще всего захватывать материал в основной деятельности). Но, видимо, вы все равно решили свою проблему, так что все хорошо. –

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