Toast.makeText von resource-string
Habe ich eine Klasse namens MyPrimaryClass, diese Klasse hat eine Schaltfläche Hexe, wenn Sie gedrückt, erstellt ein Intent mit der Klasse myClassForResult.
Nutze ich dies, um es zu starten:
startActivityForResult(myIntentOfMyClassForResult, ACTIVITY_EDIT_BTEXT);
Beide MyPrimaryClass, und myClassForResult erstreckt Aktivität.
So, wenn ich Anrufe, Toast.makeText innerhalb der myClassForResult, mit dem parameter "text" von R. string.my_resource_string, es gibt mir Kraft Schließen!
Ich habe dies ausprobiert:
Context c = myClassForResult.this;
Toast toast = Toast.makeText(c,
c.getResources().getString(R.string.my_resource_string),
Toast.LENGTH_SHORT);
toast.show();
Auch dies: c = getApplicationContext()
Auch dies: c = getBaseContext()
Auch dies:
Context c = MyPrimaryClass.this;
Toast toast = Toast.makeText(c,
R.string.my_resource_string,
Toast.LENGTH_SHORT);
toast.show();
Wenn ich einen inline-string, wie "Mein toast Text!", es funktioniert. Aber ich brauche, um einen string aus den Ressourcen.
-Problem gelöst:
Um das problem zu lösen ich habe die Dauer der Toast auf Toast.LENGTH_LONG
Den string R. string.my_resource_string Wert "Der Titel ist leer"
Wenn ich ändern Sie seinen Wert auf "Titel", es funktionierte einwandfrei, also Schätze ich, dass der string war zu lang für den Toast.LENGTH_SHORT Dauer.
Aber wenn ich die Dauer ändern zu Toast.LENGTH_LONG, ich könnte mit der langen Schnur.
Context c = MyPrimaryClass.this;
Toast toast = Toast.makeText(c,
R.string.my_resource_string,
Toast.LENGTH_LONG);
toast.show();
dies ist die logcat Fehler: android.Inhalt.res.Resources$NotFoundException: String resource ID #0x7f04000a
Erklären Sie die Bedeutung warum Sie mit den beiden Klassen?
Ursache eine Klasse ist eine Liste der Elemente, die sekundäre Klasse ist für die Bearbeitung dieser Elemente...
Schreiben Sie nicht beantworten, im Körper in Frage, besser, erstellen Sie eine neue Antwort und es akzeptieren 🙂
InformationsquelleAutor DMF | 2012-02-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Sache zu beachten:
Kann vereinfacht werden in:
Dadurch spart man eine Objekt-Referenz, die Sie nicht brauchen.
Eine Sache, die Sie verstehen müssen ist, dass, wenn Sie die Referenz, die Sie R in Ihrem Paket (nicht android.R.) Sie haben Zugriff auf Ihre Ressourcen so lange wie Sie haben Kontext.
Update
Nach der Realisierung, was Sie mit diesem für würde ich empfehlen,
ändern Sie Ihren Ansatz, während dies in der Tat möglich, deine Herangehensweise ist nicht ideal für etwas so einfach.
Die Methode startActivityForResult(xx) ist in der Regel, wenn Sie möchten, um eine Anwendung zu starten, ist außerhalb des Pakets für ein Ergebnis.
Zum Beispiel: wenn ich wollte abrufen, einen barcode von einem Produkt, dann würde ich beginnen, eine Absicht, die barcode-Klasse, indirekt durch eine Aktion. Dann würde ich das abrufen der Daten durch die Verwendung onActivityResult(xx).
macht es Keinen Sinn, dies zu tun für Ihre eigenen Klassen.
meine Antwort ist in der unteren.
Ich irgendwie wusste es, aber ich bin lernen Android-Programmierung noch nicht, so versuchte ich auf der post einen einfachen code, der Vermeidung zu tun, einige noob-Fehler 🙂
Bitte Lesen Sie meine update @DMF
Danke @JoxTraex, aber wie kann ich das abrufen ein Ergebnis aus einer Klasse von meiner eigenen, nicht mit startActivityForResult?
InformationsquelleAutor JoxTraex
Versuchen:
Ein Verweis auf MyPrimaryClass und verwenden MyPrimaryClass.getString(R. string.my_resources_string)
Ich Tat dies: Context c = MyPrimaryClass.diese; dann c ist.getString(R. string.my_resources_string)
ja, Sie müssen den Kontext im Allgemeinen nicht diese
InformationsquelleAutor ab11
@dilipkaklotar richtig Beantwortet, aber ein paar änderungen getan werden muss:
dies ist, wie es für mich gearbeitet
den getResources hat keine Klammern ().
und am Ende ist .show(); nicht toShow().
aber es ist richtig. so ich danke Ihnen sehr.
InformationsquelleAutor Outsider
InformationsquelleAutor dilipkaklotar