Ресурсы Android как переменная-член в основной деятельности

1

Работая в мире приветствия android, я добавил несколько строк в файл ресурсов strings.xml. Затем я попытался установить переменную-член моего основного класса активности на значение одной из строк:

public class MyActivity extends Activity {
  /** Called when the activity is first created. */
  public String myString = getString(R.string.MY_STRING); // compiles, but crashes

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView tv = new TextView(this); 
    tv.setText(myString);
    setContentView(tv);
  }     
}

Когда он сбой, я получаю это в logcat: Невозможно создать экземпляр активности ComponentInfo {com.myclass}: java.lang.NullPointerException

Итак, я делаю это неправильно или это ожидаемое поведение? Оглядываясь на документацию, я не вижу ничего, что могло бы заставить меня думать, что ресурсы будут недоступны, пока основная деятельность будет строиться.

http://developer.android.com/guide/topics/resources/accessing-resources.html

Тем не менее, я уверен, что это будет работать в других классах - просто не основной класс активности.

  • 0
    @ Ричард Грин, я думаю, ты прав. Хотите знать, было бы лучше, если бы я назначил его в OnResume ()?
Теги:
resources

1 ответ

1

Я не думаю, что вы можете вызвать getString в классе Activity, поскольку он, возможно, еще не был правильно инициализирован. Возможно, вам придется разделить объявление (сохранить его как общедоступную String), а затем присваивать (переместить его в onCreate).

public class MyActivity extends Activity {
      /** Called when the activity is first created. */
      public String myString;

      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        myString = getString(R.string.MY_STRING); // compiles, but crashes
        TextView tv = new TextView(this); 
        tv.setText(myString);
        setContentView(tv);
      }     
    }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню