Ресурсы Android как переменная-член в основной деятельности - PullRequest
1 голос
/ 17 февраля 2012

Работая с миром android hello, я добавил несколько строк в файл ресурсов 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

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

1 Ответ

1 голос
/ 17 февраля 2012

Я не думаю, что вы можете вызвать getString для класса Activity, так как он, возможно, еще не был правильно инициализирован. Возможно, вам придется разделить объявление (оставить его как открытую строку) и затем присвоение (переместить его в 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);
      }     
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...