2012-04-06 3 views
1

У меня есть абстрактный класс, который содержит метод настройки текста заголовка. Это выглядит следующим образом:Извлечение строки Android

TextView header = (TextView) findViewById(R.id.hTitle); 
header.setText(getString(this.getHeaderStringID())); 

На данный момент методов, которые переопределяют абстрактные getHeaderStringID() возвращают целые числа, как 0x7f040001. -Интересно, есть ли способ использовать конкатенацию или несколько аналогичного для достижения этой цели:

header.setText(getString(R.string.!getHeaderStringID!)); 

В желаемом случае getHeaderStringID будет возвращать строку как «sAboutHeader»

2 Я новичок в Java - я могу избавиться от создания объекта заголовка. Если я этого не делаю, проверщик eclipse говорит, что соответствующий метод не найден и не позволяет запускать приложение.

ответ

1

Если я вас правильно понял, я думаю, что вы должны использовать отражение:

try { 
     Field idField = R.String.class.getDeclaredField(getHeaderStringID()); 
     int value = idField.getInt(idField); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return -1; 
    } 

значение переменной может быть дано в качестве входных данных для функции GetString().

+0

он работает так, как сейчас, но возвращает целое число. То, что я хочу сделать, - установить для каждого подкласса свой собственный ** строковый ** идентификатор для достижения header.setText (getString (R.string. Здесь появляется какая-то магия, которая добавляет мой строковый идентификатор к R.string.)); –

+0

После того, как вам удастся использовать уникальную строку для R.string, она вернет вам целое число. – Mark268

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