getString (R.strings ...) aus der Klasse aufrufen?

9

Gibt es eine Möglichkeit, die getString-Methode aus einer separaten Klasse zu verwenden?

Ich habe eine Zeichenkette in meiner Zeichenkette xml gespeichert, ich möchte diese Zeichenkette in einem Objekt verwenden ... aber die Methode ist nicht einmal im Objekt verfügbar ...

irgendwelche Tipps?

    
Mars 17.09.2011, 11:28
quelle

6 Antworten

8

Die Lösung hier ist, um sicherzustellen, dass Ihr Objekt einen Verweis auf den Anwendungskontext hat

%Vor%

offensichtlich müssten Sie den Kontext beim Erstellen eines Objekts oder beim Caling der Methode

angeben     
Mars 24.07.2014, 10:53
quelle
10

getString() ist eine Methode der Context -Klasse¹. Wenn Sie es in einer separaten Klasse benötigen (die Context nicht erweitert), ist es normalerweise am besten, es als separates Argument für die Methode anzugeben, die es benötigt.

Beispiel:

%Vor%

Eines ist wichtig: Nie speichert den Kontext in der separaten Klasse.
Geben Sie ein Argument an. Andernfalls verlieren Sie Speicher und unterbrechen den gesamten Android-Lebenszyklus, wenn das Objekt, das den Kontext speichert, länger lebt als das Objekt, zu dem der Kontext ursprünglich gehört (z. B. eine Aktivität).

¹ getString() kann auch aus dem Resources Klasse - die Sie über Context.getResources()

erhalten können     
user658042 17.09.2011 11:47
quelle
6

resouce-Datei: values ​​/ strings.xml

%Vor%

Java

%Vor%     
iCrazybest 02.07.2015 10:32
quelle
1

bearbeiten: Das Folgende wird NICHT funktionieren. Ich habe das auf einer anderen Website gelesen und angenommen, dass es funktioniert hat, aber ich habe es gerade in meiner App versucht und immer einen Fehler erhalten. Problem ist, es wird kompiliert, aber Sie erhalten eine Laufzeitausnahme.

Dies funktioniert von jeder Java-Klasse:

%Vor%     
devo 14.08.2012 17:02
quelle
0

Wenn Sie keinen Kontext als Parameter übergeben können, erstellen Sie eine andere Klasse, in die Sie alle Ihre statischen Daten einfügen.

Beispiel:

%Vor%

und rufen Sie diese Zeichenfolge von Ihrer anderen Klasse ab, indem Sie direkt aufrufen StaticData.BASE_URL

nett und sauber.

    
JPhi Denis 20.06.2016 14:24
quelle
-3

Versuchen Sie dies in Ihrer Java-Datei:

String myString = getResources().getString(R.string.MY_STRING)

Verwenden Sie jetzt dieses Zeichenfolgenobjekt.

    
Shafi 17.09.2011 11:47
quelle