Verwenden einer Zeichenfolgenressource in einem Toast
-
27-10-2019 - |
Frage
Mein Code lautet:
public static void ToastMemoryShort (Context context) {
CharSequence text = getString(R.string.toast_memoryshort); //error here
Toast.makeText(context, text, Toast.LENGTH_LONG).show();
return;
}
aber ich erhalte in Eclipse "Kann keinen statischen Verweis auf die nicht statische Methode getString (int) vom Typ Context erstellen".Ich versuche, mich auf die Lokalisierung meiner App vorzubereiten (alle fest codierten Zeichenfolgen in Ressourcen zu integrieren), also wo ich habe:
getString(R.string.toast_memoryshort)
Ich hatte zuvor eine fest codierte Zeichenfolge, die in Ordnung war.
Ich bin mir nicht sicher, was hier los ist (Java Noob).Kann mich bitte jemand aufklären?
Vielen Dank
Baz
Lösung
Verwenden Sie stattdessen einfach Folgendes:
makeText (Kontextkontext, int resId, int duration) Erstellen Sie einen Standard Toast, der nur eine Textansicht mit dem Text einer Ressource enthält.
Von http://developer.android.com/reference/android/widget/Toast.html
Andere Tipps
Wechseln Sie zu
public static void ToastMemoryShort (Context context) {
Toast.makeText(context, context.getString(R.string.toast_memoryshort), Toast.LENGTH_LONG).show();
return;
}
Sie könnten Ihren Toast wie folgt allgemeiner gestalten:
public void toast(String msg){
Context context = getApplicationContext();
CharSequence text = msg;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
Rufen Sie dann einfach an, wenn Sie Folgendes benötigen:
toast( "My message hardcoded" );
oder unter Bezugnahme auf strings.xml wie folgt:
toast( this.getString(R.string.toast_memoryshort) );
Sie sollten ändern
CharSequence text = getString(R.string.toast_memoryshort); //error here
für:
CharSequence text = context.getString(R.string.toast_memoryshort);
Die getString
-Funktion ist in Kontext # getString (int)
Verwenden Sie den folgenden Code, um die gewünschte Ausgabe zu erhalten:
Toast.makeText(getApplicationContext(),getString(R.string.exit_survey_toast),Toast.LENGTH_LONG).show();
Ersetzen Sie exit_survey_toast durch Ihren Zeichenfolgenwert.