2015-02-02 5 views
1

Я новичок в программировании, и я пытаюсь создать Android-приложение с помощью Android Studio. Я пробовал искать, но мои результаты, похоже, не то, что я ищу, потому что они кажутся слишком сложными. То, что я написал ниже, является лишь примером.Возвращает getString из xml со строковой переменной?

Я хочу, чтобы иметь возможность возвращать строку из string.xml, когда пользователь вводит «кит». Строка в этом случае - информация о ките.

Это мой java-файл, животное уже является строкой, введенной из формы.

TextView textview = new TextView(this); 
String animalType = "water_" + animal; // This become water_whale if user typed whale 
String animalInfo = getString(R.string.animalType); // This doesn't work 
textView.setText(animalInfo); 

Это мой string.xml

<string name="water_fish">Fish is a small bla...</string> 
<string name="water_whale">A whale is an enourmous blabla...</string> 
<string name="land_giraffe">Africa.</string> 

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

ответ

0

R.string.anyIdentifer представляет собой целочисленное значение. Вы не можете добавить к нему свой собственный идентификатор, как вы не можете назвать какое-либо несуществующее свойство в любом классе. Если вы хотите динамически обращаться к любому ресурсу с его именем, для этого существует другой подход.

Используйте этот

TextView textview = new TextView(this); 
String animalType = "water_" + animal; 
int animalTypeId = getResources().getIdentifier(animalType, "string", getActivity().getPackageName()) 
String animalInfo = getResources().getString(animalTypeId); 
textView.setText(animalInfo); 
+0

Это сработало, однако я не использовал 'getActivity(). GetPackageName()', поскольку он дал мне ошибки, но при использовании только 'getPackageName()' я получил результат, который я хотел. – traktor

+0

Да, это зависит от того, где вы используете код. – Rohit5k2

0

String string=getResources().getString(R.string.water_whale);

вы не можете использовать getString() метод напрямую.

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