2012-11-12 8 views
7

Sono nuovo di programmazione Android e voglio sapere questo:Come riferimento di programmazione <string> in file XML in Android

ho 3 stringhe definiti nel file strings.xml: <resources> <string name="one">First Click </string> <string name="two">Second Click </string> <string name="three">Third Click </string> <resources>

e una vista del testo che mostra la prima stringa nel file strings.xml. Non voglio usare settext("******") per cambiare il testo della visualizzazione del testo quando l'utente ha clic su un pulsante. come posso effettuare il passaggio TextView al testo già definito nel file strings.xml, dicono da

primo clic al secondo scatto

+2

non puoi cambiare il testo di TEXTVIEW (dinamico) senza settext ("***"), quindi devi farlo. ... –

+1

Come saprà il TextView che il pulsante è stato cliccato? Come saprà il pulsante su quale TextView tiene la stringa? –

risposta

1

ottenere le risorse dell'applicazione, e quindi ottenere un stringa con l'ID che stai cercando.

getResources().getString(R.string.one); 
+0

pls ... l'ID può essere una variabile .... se non ... come posso usare una variabile per determinare quale stringa stampare? – thunderson

+0

L'ID è solo un numero intero che fa riferimento a un punto nella memoria specificato dal file R auto-compilato. È possibile utilizzare una variabile intera, ma è probabile che il punto in memoria cambierà e le stringhe si confonderanno. Ad esempio, R.string.one potrebbe essere 0x7f06000b una corsa e 0x7c0af0cb la successiva. Puoi sempre usare una dichiarazione switch (var) {case:}. –

15

Usa setText(getResources().getString(R.string.one));

+0

. Grazie mille .... ma nel caso in cui ci siano un sacco di stringhe specificate nel file strings.xml, c'è un modo in cui una variabile può essere usata per determinare la stringa da mostrare .... per esempio setText (getResources(). getString (R.string.VARIABLE)); o qualcosa del genere ... in modo che possa mostrare diversi testi .. – thunderson

+0

Non riesco a capirti, cosa vuoi? Si prega di inviare un piccolo esempio qui. Se soddisfi la mia risposta, per favore controlla il segno di spunta sulla mia risposta. –

2

Credo che hai bisogno di questo se sbaglio poi tornare a me.

Prova questo.

getResources().getString(R.string.app_name); 

Basta semplicemente leggere la risorsa dell'applicazione .È possibile utilizzare qualsiasi risorsa della vostra applicazione per getResources() della classe di risorsa.

Ora, qui è necessario leggere il modulo stringa String.xml in modo da poter utilizzare getString() che è il metodo di risorsa in modo da ottenere l'output Ora.

+0

grazie mille .... ma in un caso in cui ci sono un sacco di stringhe specificate nelle stringhe.file xml, c'è un modo in cui una variabile può essere usata per determinare la stringa da mostrare .... ad esempio setText (getResources(). getString (R.string.VARIABLE)); o qualcosa del genere ... in modo che possa mostrare testi diversi ... a seconda di determinate azioni dell'utente ... – thunderson

+0

puoi dare un esempio di quale tipo di input utente può cambiare stringa? significa per quale tipo di input è possibile modificare la mia stringa di output. –

-2

Questo ti darebbe l'effetto desiderato:

yourEditText.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View view) { 

     String text = yourEditText.getText().toString(); 
     if(text.equals(getResources().getString(R.string.one)) { 

      yourEditText.setText(getResources().getString(R.string.two) 
     } else if(text.equals(getResources().getString(R.string.two)) { 

      yourEditText.setText(getResources().getString(R.string.three) 
     } else { 

      yourEditText.setText(getResources().getString(R.string.one) 
     } 
    }); 
+0

** non voglio usare settext ("******") ** hai letto questo in questione? –

+0

perché esattamente non vuoi usare settext()? Non c'è altro modo. –

+0

voglio usare una variabile per determinare la stringa da stampare .... i.e. una variabile che determinerà se stampare la prima stringa o l'ultima stringa, ecc. nel file strings.xml – thunderson

4

Per determinare quale stringa si utilizza con una variabile si dovrà utilizzare un interruttore, come di seguito

switch(anyInt) { 
    case 1://if the int == 1, then the textview will be set to this 
     tv.setText(getResources().getString(R.string.one); 
     break; 
    case 2://if the into == 2 then the TV will be set to this 
     tv.setText(getResources().getString(R.string.two 
     break; 
    default: 
     tv.setText("into does not have value 1-2") 
} 

Aggiungi come molti di questi dichiarazioni di cui hai bisogno, credo che sia molto efficiente in termini di memoria anche se hai molte dichiarazioni

Problemi correlati