Доступ к файлу ресурсов string.xml из кода Java Android

109

Как получить доступ к значениям в res/values/string.xmlфайле ресурсов с Android Activity class?

Равикиран
источник

Ответы:

149

Ну, вы можете получить String, используя,

getString(R.string.app_name);

И вы можете получить строковый массив, используя

String arr[] = getResources().getStringArray(R.array.planet);
for (int i = 0; i < arr.length; i++) {
        Toast.makeText(getBaseContext(),arr[i], Toast.LENGTH_LONG).show();  
}
Лалит Поптани
источник
<string-array name = "planet"> <item> Mercury </item> <item> Venus </item> <item>Earth</item> </string-array> для этого кода, а я использую getString (R. string.planets);
Ravikiran
Я проверил ваш ответ, но получил ошибку ForceClose. Спасибо за помощь
Равикиран
ЭТО LOGCAT 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): FATAL EXCEPTION: main 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: идентификатор строкового ресурса # 0x7f050000
Равикиран,
ЭТО LOGCAT 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): FATAL EXCEPTION: main 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: идентификатор строкового ресурса # 0x7f050000 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): at android.app.ActivityThread. performLaunchActivity (ActivityThread.java:2663)
Равикиран,
1
Обратите внимание, что getString () не статичен. Если вы хотите присвоить значение string.xml статическому свойству вашего класса приложения, сделайте это в своем классе onCreate ().
KrisWebDev
44

strings.xml:

<string name="some_text">Some Text</string>

Деятельность:

getString(R.string.some_text);
Олли С
источник
@MByD Это первый раз, когда я был быстрее тебя =)
Майкл
<string-array name = "planet"> <item> Меркурий </item> <item> Венера </item> <item>Earth</item> </string-array>
Равикиран
16

Поместите этот код в res/values/string.xml

<string-array name="planet"> 
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
</string-array>

Этот код необходимо вставить res/layout/main.xmlи удалить виджеты по умолчанию, присутствующие в main.xml.

<ListView android:id="@+id/planet"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:entries="@array/planet"/>
</LinearLayout>
Равикиран
источник
15

Если getString (R.string.app_name); не работает для вас, вы можете передать контекст следующим образом:

context.getString(R.string.app_name);
Притеш Десаи
источник
2

Если у вас есть контекст Activity, используйте:

getString(R.string.app_name);

Если у вас нет контекста, попробуйте ниже, вы можете получить контекст из активности, используя Constructor.

mContext.getString(R.string.app_name);
Гауравснгарг
источник