Antworten:
Versuche dies
String mess = getResources().getString(R.string.mess_1);
AKTUALISIEREN
String string = getString(R.string.hello);
Sie können entweder getString(int)oder verwenden getText(int), um eine Zeichenfolge abzurufen. getText(int)behält alle auf die Zeichenfolge angewendeten Rich-Text-Stile bei.
Referenz: https://developer.android.com/guide/topics/resources/string-resource.html
getResouces().getInteger(R.integer.my_value_in_xml)
In Aktivität:
this.getString(R.string.resource_name)
Wenn Sie nicht aktiv sind, aber Zugriff auf den Kontext haben:
context.getString(R.string.resource_name)
application.getString(R.string.resource_name)
thiswährend Sie in Aktivität sind. Einfach getString()werden Sie Dinge tun lassen.
Ich benutze dies:
String URL = Resources.getSystem().getString(R.string.mess_1);
Resources.getSystem()nicht die Anwendungsressourcen, sondern nur die von Android. Es sollte nicht für Ressourcen wie verwendet werden string. Ich habe diese Lösung verwendet und die Anwendung stürzte ab und warf eine notfoundexceptionschwer verständliche (da die Ressource in vorhanden ist strings.xml).
Übrigens ist es auch möglich, String-Arrays in der Datei strings.xml wie folgt zu erstellen:
<string-array name="tabs_names">
<item>My Tab 1</item>
<item>My Tab 2</item>
</string-array>
Und dann können Sie aus Ihrer Aktivität die Referenz wie folgt erhalten:
String[] tab_names = getResources().getStringArray(R.array.tab_names);
String tabname1=tab_names[0];//"My Tab 1"
Nur für zukünftige Referenzen.
In der Dokumentation zu den String-Ressourcen heißt es:
Sie können entweder getString (int) oder getText (int) verwenden, um eine Zeichenfolge abzurufen. getText (int) behält alle Rich-Text-Stile bei, die auf die Zeichenfolge angewendet werden.
Sie müssen auf den Kontextnamen verweisen, bevor Sie ihn getResources()in Android verwenden können.
String user=getApplicationContext().getResources().getString(R.string.muser);
ODER
Context mcontext=getApplicationContext();
String user=mcontext.getResources().getString(R.string.muser);
Wenn Sie in einer Aktivität sind, können Sie verwenden
getResources().getString(R.string.whatever_string_youWant);
Wenn Sie nicht an einer Aktivität teilnehmen, verwenden Sie Folgendes:
getApplicationContext.getResource().getString(R.String.Whatever_String_you_want)
Holen Sie sich einen Link zum Kontext Ihrer Anwendung
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)
string.xml
<resources>
<!-- ....... -->
<string name="no_internet_connection">No internet connection</string>
<!-- ....... -->
</resources>
String-Wert abrufen:
val errorMessage = R.string.no_internet_connection.toLocalizedString()
während du schreibst R. Wenn Sie sich auf die R.javadurch Eclipse erstellte Klasse beziehen , verwenden Sie die Ressource, aus der Sie in der Methode lesen möchten, getResources().getString()und übergeben idSie sie getString().
Beispiel: String[] yourStringArray = getResources().getStringArray(R.array.Your_array);
** **.
Ich hoffe, dieser Code ist von Vorteil
** **.
String user = getResources().getString(R.string.muser);
Aktualisieren
getString(R.string.some_string_id)in beiden Activityoder verwenden Fragment.Context.getString(R.string.some_string_id)wenn Sie keinen direkten Zugriff auf die getString()Methode haben. Wie Dialog.Das Problem ist, wo Sie keinen ContextZugriff haben , wie bei einer Methode in Ihrer UtilKlasse.
Nehmen Sie die folgende Methode ohne Kontext an.
public void someMethod(){
...
// can't use getResource() or getString() without Context.
}
Jetzt werden Sie Contextals Parameter in dieser Methode übergeben und verwendengetString().
public void someMethod(Context context){
...
context.getString(R.string.some_id);
}
Was ich tue ist
public void someMethod(){
...
App.getRes().getString(R.string.some_id)
}
Was? Es ist sehr einfach, überall in Ihrer App zu verwenden!
Hier ist eine einzigartige Bonuslösung, mit der Sie von überall auf Ressourcen zugreifen können 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;
}
}
Fügen Sie Ihrem manifest.xml <applicationTag ein Namensfeld hinzu.
<application
android:name=".App"
...
>
...
</application>
Jetzt können Sie loslegen.
getString (R.string.your_string) erhält das Ergebnis
String myString = getResources().getString(R.string.here_your_string_name);
Jetzt wird Ihre Zeichenfolge in myString kopiert. Ich hoffe es wird für dich funktionieren.
Sie können den in strings.xml definierten Wert direkt lesen:
<resources>
<string name="hello">Hello StackOverflow!</string>
</resources>
und in eine Variable setzen:
String mymessage = getString(R.string.hello);
aber wir können die Zeichenfolge in der Ansicht definieren:
<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)wenn Sie sich bereits in einerContext(Aktivität oder Dienst) befinden.