Acesse o arquivo de recurso string.xml a partir do código Java Android

109

Como você acessa os valores no res/values/string.xmlarquivo de recursos do Android Activity class?

Ravikiran
fonte

Respostas:

149

Bem, você pode obter String usando,

getString(R.string.app_name);

E você pode obter string-array usando

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
fonte
<string-array name = "planet"> <item> Mercúrio </item> <item> Vênus </item> <item>Earth</item> </string-array> para este código enquanto eu uso getString (R. string.planets);
Ravikiran
Verifiquei sua resposta, mas recebi um erro de ForceClose. Obrigado por ajudar
Ravikiran
ESTE É LOGCAT 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): EXCEÇÃO FATAL: main 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): java.lang.RuntimeException: Não foi possível iniciar a atividade ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: String resource ID # 0x7f050000
Ravikiran
ESTE É LOGCAT 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): EXCEÇÃO FATAL: main 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): java.lang.RuntimeException: Não foi possível iniciar a atividade ComponentInfo {com.string / com.string.string}: android.content.res.Resources $ NotFoundException: String resource ID # 0x7f050000 08-27 20: 16: 04.844: ERROR / AndroidRuntime (339): em android.app.ActivityThread. performLaunchActivity (ActivityThread.java:2663)
Ravikiran
1
Observe que getString () não é estático. Se você deseja atribuir um valor string.xml a uma propriedade estática de sua classe de aplicativo, faça isso em sua classe onCreate ().
KrisWebDev
44

strings.xml:

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

Atividade:

getString(R.string.some_text);
Ollie C
fonte
@MByD Essa é a primeira vez que fui mais rápido do que você =)
Michael
<string-array name = "planet"> <item> Mercúrio </item> <item> Vênus </item> <item> Terra</item> </string-array>
Ravikiran
16

Coloque este código em res/values/string.xml

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

Este código deve ser colocado res/layout/main.xmle remover widgets padrão presentes em main.xml.

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

Se getString (R.string.app_name); não está funcionando para você, você pode passar o contexto como este:

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

Se você tem o contexto da atividade, vá com:

getString(R.string.app_name);

Se você não tem o contexto, tente abaixo, você pode obter o contexto da atividade usando Constructor.

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