2011-12-29 21 views
5

nella mia app faccio una richiesta web che restituisce alcuni codici di risultato, ad es. 105. Io sono risorse di tipo stringa che assomigliano cheRisorse stringa dinamiche Android

<string name="r105">O.K.</string> 
<string name="r106">Something went wrong.</string> 
<string name="r333">Fatal error.</string> 

Ora voglio fare qualcosa di simile

Toast.makeText(parent.getApplicationContext(), 
     parent.getString(R.string.r+resultCode), Toast.LENGTH_LONG).show(); 

mentre r+resultCode è l'identificatore di risorsa.

Questo non funziona. Qualche idea di come farlo?

+0

Nel codice precedente hai utilizzato la risorsa come r105 ma, mentre accedevi scrivevi R.string.r È corretto ?? –

+0

Ora ho capito la tua domanda, proverò dammi 5 minuti. –

risposta

13

Prova questo getResources().getIdentifier(name, defType, defPackage) in un modo semplice.

Toast.makeText(this, getResources().getIdentifier("r"+resultcode, "string", 
getPackageName()), Toast.LENGTH_LONG).show(); 
+0

perfetto, grazie! –

0

Provare come segue, funziona per me. Usa parent.getApplicationContext() per te.

String str = getString(R.string.r)+resultCode; 

     Toast.makeText(getApplicationContext(), 
       str, Toast.LENGTH_LONG).show(); 
+1

Penso che getString (R.string.r) + resultCode non funzioni perché non esiste una risorsa chiamata "r" –

+0

Ho dato solo parte del mio codice, non l'intera cosa. L'ho usato nel mio progetto in file xml. –

+0

@ArtWorkAD è il mio suggerimento per te? –

4

È possibile farlo utilizzando getResources().getIdentifier(name, defType, defPackage). Qualcosa del genere:

// Assuming resultCode is an int, use %s for String 
int id = getResources().getIdentifier(String.format("r%d", resultCode), 
             "string", getPackageName()); 
String result = getString(id); 
+0

Ottengo un errore "% d non può formattare gli argomenti java.lang.String" –

+2

Ah, pensavo resultCode era un int. Prova% s per la stringa o fai semplicemente "r" + resultCode. – aspartame

0

Un modo semplice per ottenere l'ID risorsa dalla stringa. Qui resourceName è il nome della risorsa ImageView nella cartella drawable che è inclusa nel file XML. Im ottenendo "id" è possibile utilizzare "string".

int resID = getResources().getIdentifier(resourceName, "id", getPackageName()); 
ImageView im = (ImageView) findViewById(resID); 
Context context = im.getContext(); 
int id = context.getResources().getIdentifier(resourceName, "drawable", 
context.getPackageName()); 
im.setImageResource(id); 
Problemi correlati