2016-04-16 14 views
0

Ich habe das an der Spitze meiner Klasse erklärt folgendes:initialisieren ein String-Array aus einem String-Array Ressource

private String[] mapTypes = new String[]{"Normal", "Satellite", "Satellite with streets", "Terrain"}; 

Ich habe auch die folgenden String-Array Ressource definiert:

<string-array 
    name="map_types"> 
     <item>Normal</item> 
     <item>Satellite</item> 
     <item>Satellite with streets</item> 
     <item>Terrain</item> 
</string-array> 

Ich möchte das Array von der String-Array-Ressource an der Spitze der Klasse initialisieren. Folgendes tun, wenn die Variable deklariert wird:

private String[] mapTypeNames = getResources().getStringArray(R.array.map_types); 

Irgendwelche Ideen?

Antwort

0

Wenn "die Klasse" etwas von Context erbt, können Sie das Feld gerne in der Klasse haben, aber Sie können es erst mit der entsprechenden Lebenszyklusmethode (z. B. onCreate() in der Aktivität) initialisieren. getResources() wird bis dahin nicht funktionieren.

Wenn "die Klasse" etwas ist, das nicht von Context erbt, ist das, was Sie syntaktisch wollen, standardmäßig nicht möglich. Und selbst wenn Sie Ihre eigene getResources() Methode implementieren, benötigt diese wiederum einen Context, und Sie sind zurück auf Platz eins.

+0

Das ist, was ich dachte. Ich wollte nur vermeiden, das Array jedes Mal zu initialisieren, wenn onCreate() ausgeführt wird, und gleichzeitig ein guter Junge zu sein und die Ressourcen –

+0

@ChrisRead zu verwenden: "Ich habe gerade versucht, das Array nicht jedes Mal onCreate() zu initialisieren. ausgeführt wird "- Sie würden nichts sparen. 'onCreate()' wird nur ausgeführt, wenn die Aktivität erstellt wird, die kurz nach der Instanziierung erfolgt. So würde Ihr Feldinitialisierer sein. – CommonsWare

Verwandte Themen