2010-11-11 5 views
5

У меня есть следующие /res/values/uris.xmlNullPointerException пытается получить доступ к ресурсу Струнного

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<string name="bladder">blahblah</string> 
</resources> 

Я обращающееся это в коде:

private String bladderUrl= getString(R.string.bladder); 

Но она возвращается нулем. Я не уверен, почему?

ответ

21

Мои догадываюсь вы разместили bladderUrl л так:

public class YourActivity extends Activity { 
    private String bladderUrl = getString(R.string.bladder); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

... 

Однако вам нужно сделать что-л так:

public class YourActivity extends Activity { 
    private String bladderUrl; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     bladderUrl = getString(R.string.bladder); 
... 
0

Сначала убедитесь, что эти значения указаны в файле strings.xml.

Кроме того, вы не можете получить доступ к строкам из конструктора. Контекст приложения еще не инициализирован. Вы должны сделать это в onCreate().

Эммануэль

+0

Я не могу получить доступ к своей частной строке из onCreate(), это выходит за рамки ... –

+0

@Sheehan Alam, то, скорее всего, у вас проблемы с дизайном приложения. –

+0

Я не уверен, что понимаю. Эта строка находится в активности, но onCreate() находится в подклассе или что-то еще? Просто переместите строку в подкласс или сделайте ее защищенной. Вы просто не можете получить доступ к контексту приложения из своего конструктора, поэтому вам придется это сделать позже. – Emmanuel

1

Прежде всего, чтобы очистить то вверх. Вы не должны иметь все свои строки в strings.xml. Период.

Ответы Эммануэля частично правы. Вы должны получить строку внутри вашего метода onCreate(), когда контекст инициализируется. Его ответ лишь частично правильный, так как он также упомянул, что вы должны иметь строки в strings.xml, что неверно.

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