2011-11-12 18 views
23

Nella mia classe java voglio utilizzare una risorsa stringa da strings.xml.android come utilizzare la risorsa stringa in una classe java

per questo devo usare come qui di seguito,

getString(R.string.address) 

se la mia classe è un'attività allora la sua assunzione. Ma la mia classe è una semplice classe java, come posso usarla?

È possibile? Grazie

+0

Se il tuo progetto è un progetto Android. Finalmente puoi usarlo.Hai provato? prova a usarlo allora dicci. –

+4

Sono curioso di sapere qual è la tua logica quando hai accettato la risposta che hai fatto. –

+0

+1 (altri 12) – MKJParekh

risposta

30

Una classe non ha un contesto e di utilizzare una risorsa di stringa è necessario un contesto. Quindi basta chiamare la classe da un'attività e fornire un parametro context e all'interno del costruttore della classe basta usare quel contesto per ottenere la risorsa stringa.

Nella classe personalizzata è necessario importare lo spazio dei nomi R per il progetto per ottenere l'ID risorsa.

import com.myrandomapp.R; 

Quindi per ottenere la stringa effettiva

context.getString(R.string.COOL_STRING) 
+13

Questa risposta è incompleta - Per completare per coloro che hanno ancora domande, è necessario importare lo spazio dei nomi R per il progetto per ottenere l'ID risorsa. esempio) import com.myappdomain.R (USA QUI IL TUO NAMESPACE QUI) Quindi per ottenere la stringa attuale context.getString (R.string.SOME_STRING) –

+1

@AndroidAddict +1 per te, mi risparmi un mal di testa! – Mirko

+0

@AndroidAddict +1. Dovresti modificare la risposta – Br0thazS0ul

16

È possibile passare il contesto della classe Attività alla classe java e accedere alle risorse.

dalla vostra attività Classe

Helper helper = new Helper(this); 

la classe Java

public class Helper { 

    Helper(Context c){ 
     c.getString(R.string.address); 
    } 
} 
8

È possibile creare una statica Application Context nella vostra abitudine Application classe

public class App extends Application{ 

    private static Context mContext; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mContext = getApplicationContext(); 
    } 

    public static Context getContext(){ 
     return mContext; 
    } 
} 

Poi basta chiamare App.getContext().getResources() per ottenere i valori delle risorse .

Basta ricordare che questo Context è il tipo Application, quindi ci sono cose che questo Context non è buono da usare. Leggi this per ulteriori informazioni.

0

Si potrebbe fare se si aggiunge questa riga:

// this is the object itself, and idString is the ID String bound to the literal. 
this.getString(R.string.idString) 

Spero che questo commento ti aiuta!

Brs.

Problemi correlati