2017-04-18 2 views
0

Ich arbeite an einer App auf Android Studio, die in 2 verschiedenen Sprachen sein wird. Ich habe zwei verschiedene Strings für jede Sprache gemacht. Ich musste die Strings in eine Liste setzen und einen Random für Show aufrufen, um dem Nutzer jeden Tag eine andere Benachrichtigung zukommen zu lassen.Wie verwende ich strings.xml in einer Liste ohne statisches Problem?

Hier ist mein Code:

Die strings.xml

<string-array name="notifications"> 

    <item>No1</item> 
    <item>No2</item> 
    <item>No3</item> 
    <item>No4</item> 
    <item>No5</item> 

</string-array> 

Die Klasse Choose.java

public class Choose extends AppCompatActivity { 

String[] conseils=getResources().getStringArray(R.array.notifications); 

public String getPhraseHasard() { 

    Random random = new Random(); 
    int hasard = random.nextInt(conseils.length); 

    return conseils[hasard]; 

} } 

Die Klasse Notification.java

Mein Problem: getPhraseHasard() ist eine nicht statische Methode, so dass ich es nicht in Notification verwenden kann. Wenn ich statische in Choose setze, kann ich nicht, da getResources() auch eine nicht-statische Methode ist. Irgendwelche Vorschläge?

+0

Sie brauchen eine Instanz von Choose class ... –

+0

Vielleicht ist es nützlich, etwas über die Grundlagen der Java-Programmiersprache zu lesen. BTW [Statisch und nicht statisch] (https://www.google.com/search?q=java%20static%20vs%20non-static&rct=j) –

Antwort

0

Finden Sie die Lösung

einfach ein Objekt erstellen:

Choose mchoose = new Choose(); 

dann wie folgt aufrufen:

mchoose.getPhraseHasard() 
0

getResources ein Verfahren zur Herstellung Context Klasse.

Sie können getPhraseHasard Deklaration löschen und verwenden Sie getResources von Context setzen Sie Ihre Logik in onReceive Methode. Sie können auch eine Context Eingabe für die getPhraseHasard Methode erhalten und sie in einer statischen Methode verwenden.

Verwandte Themen