Uzyskaj dostęp do pliku zasobów string.xml z kodu Java dla systemu Android

109

Jak uzyskać dostęp do wartości w res/values/string.xmlpliku zasobów z systemu Android Activity class?

Ravikiran
źródło

Odpowiedzi:

149

Cóż, możesz uzyskać String za pomocą,

getString(R.string.app_name);

A tablicę ciągów można uzyskać za pomocą

String arr[] = getResources().getStringArray(R.array.planet);
for (int i = 0; i < arr.length; i++) {
        Toast.makeText(getBaseContext(),arr[i], Toast.LENGTH_LONG).show();  
}
Lalit Poptani
źródło
<string-array name = "planet"> <item> Merkury </item> <item> Venus </item> <item>Earth</item> </string-array> dla tego kodu, podczas gdy ja używam getString (R. string.planets);
Ravikiran
Sprawdziłem twoją odpowiedź, ale dostałem błąd ForceClose. Dzięki za pomoc
Ravikiran
TO JEST LOGCAT 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): KRYTYCZNY WYJĄTEK: główny 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): java.lang.RuntimeException: Nie można rozpocząć działania ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: Identyfikator zasobu ciągu # 0x7f050000
Ravikiran
TO JEST LOGCAT 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): KRYTYCZNY WYJĄTEK: główny 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): java.lang.RuntimeException: Nie można rozpocząć działania ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: Identyfikator zasobu ciągu # 0x7f050000 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): at android.app.ActivityThread. performLaunchActivity (ActivityThread.java:2663)
Ravikiran
1
Zwróć uwagę, że getString () nie jest statyczne. Jeśli chcesz przypisać wartość string.xml do statycznej właściwości swojej klasy aplikacji, zrób to w swojej klasie onCreate ().
KrisWebDev
44

strings.xml:

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

Czynność:

getString(R.string.some_text);
Ollie C
źródło
@MByD To pierwszy raz, kiedy byłem szybszy niż ty =)
Michael
<string-array name = "planet"> <item> Merkury </item> <item> Wenus </item> <item> Ziemia</item> </string-array>
Ravikiran,
16

Umieść ten kod res/values/string.xml

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

Ten kod do umieszczenia res/layout/main.xmli usunięcia domyślnych widżetów obecnych w main.xml.

<ListView android:id="@+id/planet"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:entries="@array/planet"/>
</LinearLayout>
Ravikiran
źródło
15

Jeśli getString (R.string.app_name); nie działa dla Ciebie, możesz przekazać kontekst w ten sposób:

context.getString(R.string.app_name);
Pritesh Desai
źródło
2

Jeśli masz kontekst działania, przejdź do:

getString(R.string.app_name);

Jeśli nie masz kontekstu, spróbuj poniżej, możesz uzyskać kontekst z działania za pomocą Constructor.

mContext.getString(R.string.app_name);
gauravsngarg
źródło