Доступ до файлу ресурсу 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> Меркурій </item> <item> Венера </item> <item>Earth</item> </string-array> для цього коду, коли я використовую getString (R. string.planets);
Равікіран

Я перевірив вашу відповідь, але у мене з’явилася помилка ForceClose. Дякуємо за допомогу
Равікіран

ЦЕ ЛОГКАТ 08-27 20: 16: 04.844: ПОМИЛКА / AndroidRuntime (339): ТОЧНЕ ВИКОНАННЯ: головне 08-27 20: 16: 04.844: ПОМИЛКА / AndroidRuntime (339): java.lang.RuntimeException: Неможливо розпочати діяльність ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: Ідентифікатор рядкового ресурсу № 0x7f050000
Равікіран

ЦЕ ЛОГКАТ 08-27 20: 16: 04.844: ПОМИЛКА / AndroidRuntime (339): ТОЧНЕ ВИКОНАННЯ: головне 08-27 20: 16: 04.844: ПОМИЛКА / AndroidRuntime (339): java.lang.RuntimeException: Неможливо розпочати діяльність ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: Ідентифікатор рядкового ресурсу № 0x7f050000 08-27 20: 16: 04.844: ПОМИЛКА / AndroidRuntime (339): на 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

Якщо у вас є контекст діяльності, перейдіть з:

getString(R.string.app_name);

Якщо у вас немає контексту, спробуйте нижче, ви можете отримати контекст від діяльності, використовуючи Constructor.

mContext.getString(R.string.app_name);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.