0

То, что я сделал этоКак загрузить XML-ресурсы в области деятельности

public class MainActivity extends Activity { 

    private final String[] types = { "s1", "s2", "s3" }; 

Но я хочу, чтобы сохранить эти значения в res/values/types.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array 
     name="types"> 
      <item>s1</item> 
      <item>s2</item> 
      <item>s3</item> 
    </string-array> 
</resources> 

Так я изменил

public class MainActivity extends Activity { 

    private final String[] types = getResources().getStringArray(R.array.types); 

Но Я получаю исключение при запуске приложения

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference 

Итак, я полагаю, единственным решением является загрузка этого массива в onCreate? Если это так, то после активного отдыха я должен загрузить его снова?

ответ

0

Вы правы, onCreate - это хорошее место для инициализации вашей переменной. Очевидно, метод getResources() не может быть использован, прежде чем операция (контекст) будет правильно инициализирована.

Однако, если вам не нужен супер эффективный код, вы можете просто использовать getResources().getStringArray(R.array.types), когда вам нужен массив, или вы можете создать метод

private String[] getTypes() { 
    return getResources().getStringArray(R.array.types); 
} 
0

Проблема заключается в том, что вы пытаетесь вызвать Метод контекста, когда активность не создана. Попробуйте позвонить в OnCreate() :)

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