Respostas:
Tente isto
String mess = getResources().getString(R.string.mess_1);
ATUALIZAR
String string = getString(R.string.hello);
Você pode usar um getString(int)ou getText(int)para recuperar uma sequência. getText(int)manterá qualquer estilo de rich text aplicado à string.
Referência: https://developer.android.com/guide/topics/resources/string-resource.html
getResouces().getInteger(R.integer.my_value_in_xml)
Em Atividade:
this.getString(R.string.resource_name)
Se não estiver em atividade, mas tiver acesso ao contexto:
context.getString(R.string.resource_name)
application.getString(R.string.resource_name)
thisenquanto estiver na Atividade. Simplesmente getString()permitirá que você faça as coisas.
Eu estou usando isso:
String URL = Resources.getSystem().getString(R.string.mess_1);
Resources.getSystem()não fornece os recursos do aplicativo, mas apenas os do Android. Não deve ser usado para recursos como string. Usei essa solução e o aplicativo travou, lançando uma notfoundexceptionque era difícil de entender (como o recurso existe strings.xml).
A propósito, também é possível criar matrizes de strings no string.xml da seguinte maneira:
<string-array name="tabs_names">
<item>My Tab 1</item>
<item>My Tab 2</item>
</string-array>
E, em sua Atividade, você pode obter a referência da seguinte forma:
String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"
Somente para referências futuras.
Na documentação dos recursos String, ele diz:
Você pode usar getString (int) ou getText (int) para recuperar uma sequência. O getText (int) manterá qualquer estilo de rich text aplicado à string.
Você deve fazer referência ao nome do contexto antes de usar getResources()no Android.
String user=getApplicationContext().getResources().getString(R.string.muser);
OU
Context mcontext=getApplicationContext();
String user=mcontext.getResources().getString(R.string.muser);
Se você estiver em uma atividade, poderá usar
getResources().getString(R.string.whatever_string_youWant);
Se você não estiver em uma atividade, use isto:
getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)
Obter link para o contexto do seu aplicativo
class MY_APPLICATION_NAME: Application() {
companion object {
private lateinit var instance: MY_APPLICATION_NAME
fun getAppContext(): Context = instance.applicationContext
}
override fun onCreate() {
instance = this
super.onCreate()
}
}
inline fun Int.toLocalizedString(): String = MY_APPLICATION_NAME.getAppContext().resources.getString(this)
strings.xml
<resources>
<!-- ....... -->
<string name="no_internet_connection">No internet connection</string>
<!-- ....... -->
</resources>
Obter valor da string:
val errorMessage = R.string.no_internet_connection.toLocalizedString()
enquanto você escreve R. você está se referindo à R.javaclasse criada pelo eclipse, use getResources().getString()e passe ido recurso a partir do qual você está tentando ler dentro do getString()método.
Exemplo: String[] yourStringArray = getResources().getStringArray(R.array.Your_array);
**
Espero que este código seja benéfico
**
String user = getResources().getString(R.string.muser);
Atualizar
getString(R.string.some_string_id)em ambos Activityou Fragment.Context.getString(R.string.some_string_id)onde você não tem acesso direto ao getString()método. Like Dialog.O problema é onde você não tem Contextacesso , como um método em sua Utilclasse.
Suponha abaixo o método sem contexto.
public void someMethod(){
...
// can't use getResource() or getString() without Context.
}
Agora você passará Contextcomo parâmetro neste método e usarágetString().
public void someMethod(Context context){
...
context.getString(R.string.some_id);
}
O que eu faço é
public void someMethod(){
...
App.getRes().getString(R.string.some_id)
}
O que? É muito simples de usar em qualquer lugar do seu aplicativo!
Então, aqui está uma solução exclusiva de bônus, pela qual você pode acessar recursos de qualquer lugar Util class.
import android.app.Application;
import android.content.res.Resources;
public class App extends Application {
private static App mInstance;
private static Resources res;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
res = getResources();
}
public static App getInstance() {
return mInstance;
}
public static Resources getResourses() {
return res;
}
}
Adicione um campo de nome à sua manifest.xml <applicationtag.
<application
android:name=".App"
...
>
...
</application>
Agora você está pronto para ir.
getString (R.string.your_string) obtém o resultado
String myString = getResources().getString(R.string.here_your_string_name);
Agora sua string é copiada para myString. Espero que funcione para você.
Você pode ler diretamente o valor definido em strings.xml:
<resources>
<string name="hello">Hello StackOverflow!</string>
</resources>
e defina em uma variável:
String mymessage = getString(R.string.hello);
mas podemos definir a string na exibição:
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello"/>
this.getString(R.string.some_id)se você já estiver emContext(Atividade ou Serviço).