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)
this
enquanto 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 notfoundexception
que 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.java
classe criada pelo eclipse, use getResources().getString()
e passe id
o 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 Activity
ou 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 Context
acesso , como um método em sua Util
classe.
Suponha abaixo o método sem contexto.
public void someMethod(){
...
// can't use getResource() or getString() without Context.
}
Agora você passará Context
como 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
<application
tag.
<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).