Задание текста textview из строкового ресурса, содержащегося в проблеме с массивом - PullRequest
0 голосов
/ 29 июня 2010

Это должно быть просто, но сводит меня с ума.

У меня есть следующее в моем макете, а не проблемы.

<TextView
    android:id="@+id/birdinfo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="#00009c"
    android:text="The Robin is a popular bird"
/>

Тогда у меня есть эти массивы, которые настроены с помощьюсписок строковых ресурсов у меня есть

 private Integer[] DetailIds = {            
         R.string.barnaclegoose,
         R.string.barnowl,
         R.string.bewicksswan,
         R.string.blackbird,
         R.string.blackcap_male};

Так что я просто хочу сделать это!

    TextView detail = (TextView)findViewById(R.id.birdinfo);
    detail.setText(DetailIds[0]);
    setContentView(R.layout.main);

Но это вызывает ошибку принудительного закрытия.

Строковый ресурс выглядиткак это (без информации заголовка и нижнего колонтитула, конечно

<string name="barnaclegoose">What a wonderful goose!</string>

К этой проблеме добавляется, если я использую ресурс непосредственно к ресурсу

detail.setText(R.string.barnaclegoose);

Например, я все еще получаю нулевое значениеисключение! Я уверен, что делал это раньше, но, может быть, мне не хватает очевидного ???

Любые идеи приветствуются.

(Eclipse, Android 1.5, эмулятор с 1.5)

Ответы [ 3 ]

1 голос
/ 20 июня 2011

Я понимаю, что это очень старый, но он был найден в поиске ... В любом случае, вам нужно позвонить setContentView() до findViewById() и т. Д .:

setContentView(R.layout.main);
TextView detail = (TextView)findViewById(R.id.birdinfo);
detail.setText(DetailIds[0]);
1 голос
/ 05 января 2019

ваша проблема для этой линии setContentView(R.layout.main); сначала вы должны определить эту строку, а затем установить текст textView

0 голосов
/ 01 июля 2010

Спасибо за ответ. но если вы имеете в виду, например, R.string.barnaclegoose, это целочисленное значение для идентификатора, указывающего на саму строку в ресурсе.

В любом случае, я наконец-то заработал, просто создав встроенное представление вместо использования представления ресурса.

Например

TextView t= new TextView(ctx);
     t.setId(2);
     t.setTextColor(Color.BLACK);
     t.setText(DetailIds[bird]);

    mLinearLayout.addView(t,params);
    mLinearLayout.setBackgroundColor(Color.WHITE);
    setContentView(mLinearLayout);

И это прекрасно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...