Greifen Sie über Java Android Code auf die Ressourcendatei string.xml zu

108

Wie greifen Sie res/values/string.xmlvon Android aus auf die Werte in der Ressourcendatei zu Activity class?

Ravikiran
quelle

Antworten:

149

Nun, Sie können String mit bekommen,

getString(R.string.app_name);

Und Sie können String-Array mit erhalten

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
quelle
<string-array name = "planet"> <item> Mercury </ item> <item> Venus </ item> <item>Earth </ item> </ string-array> für diesen Code, während ich getString (R) verwende. string.planets);
Ravikiran
Ich habe Ihre Antwort überprüft, aber den ForceClose-Fehler erhalten. Vielen Dank für
Ihre
DAS IST 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: Aktivität ComponentInfo kann nicht gestartet werden {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: String-Ressourcen-ID # 0x7f050000
Ravikiran
DAS IST 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: Aktivität ComponentInfo kann nicht gestartet werden {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: String-Ressourcen-ID # 0x7f050000 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): at android.app.ActivityThread. performLaunchActivity (ActivityThread.java:2663)
Ravikiran
1
Beachten Sie, dass getString () nicht statisch ist. Wenn Sie einer statischen Eigenschaft Ihrer App-Klasse einen Wert für string.xml zuweisen möchten, tun Sie dies in Ihrer Klasse onCreate ().
KrisWebDev
44

string.xml:

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

Aktivität:

getString(R.string.some_text);
Ollie C.
quelle
@ MByD Das ist das erste Mal, dass ich schneller war als du =)
Michael
<string-array name = "planet"> <item> Mercury </ item> <item> Venus </ item> <item>Earth </ item> </ string-array>
Ravikiran
16

Geben Sie diesen Code ein res/values/string.xml

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

Dieser Code wird eingefügt res/layout/main.xmlund entfernt die in vorhandenen Standard-Widgets main.xml.

<ListView android:id="@+id/planet"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:entries="@array/planet"/>
</LinearLayout>
Ravikiran
quelle
15

If getString (R.string.app_name); funktioniert nicht für Sie, Sie können den Kontext wie folgt übergeben:

context.getString(R.string.app_name);
Pritesh Desai
quelle
2

Wenn Sie den Kontext der Aktivität haben, gehen Sie zu:

getString(R.string.app_name);

Wenn Sie den Kontext nicht haben, versuchen Sie es unten. Sie können den Kontext aus der Aktivität mit abrufen Constructor.

mContext.getString(R.string.app_name);
gauravsngarg
quelle