2012-01-02 4 views
6

Nella cartella/res/values ​​del mio progetto android ho una stringa e che è referenziata in una visualizzazione testuale nel mio file xml, voglio cambiare la stringa nel mio file java.android (modifica la stringa nel codice java)

Come si può vedere di seguito nel codice ho creato una variabile stringa e quindi di seguito ho impostato a cosa è impostata la variabile stringa, che è dove si trova la stringa. dove ho "qui" posto nel codice che è dove voglio passare alla stringa nella cartella dei valori. ma non so quale codice utilizzare per impostarlo.

Potrei semplicemente cambiare il testo in una visualizzazione di testo dal mio file java, che so come fare, ma quello è un vecchio modo e imposta un avvertimento quindi preferirei usare una stringa che è il modo migliore fare così.

Con la mia conoscenza del cambiamento del testo in una visualizzazione testuale ho praticamente indovinato la mia strada fino a questo stadio ma non so come andare oltre qualcuno potrebbe darmi qualche consiglio su cosa fare, grazie.

String string; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    counter = 0; 
    add = (Button) findViewById(R.id.badd); 
    sub = (Button) findViewById(R.id.bsub); 
    reset = (Button) findViewById(R.id.breset); 
    display = (TextView) findViewById(R.id.tvdisplay); 
    string = (String) getString(R.string.counter); 

    add.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
       ((///////////////here////////////////)) 
      counter++; 

     } 
    }); 
+0

Ho rimosso i riferimenti a eclipse e il tag eclipse da questa domanda poiché non è correlato. – Squonk

+1

Dalla mia comprensione, quelle stringhe sono pensate per essere costanti, quindi non credo che sarete in grado di modificarle a livello di programmazione. Sono ancora nuovo per Android Dev però, quindi non mi trattenere a questo. – Marcin

+0

@Marcin: Hai un'idea - vedi la mia risposta. – Squonk

risposta

2

Ci hai detto molto testo che cambia, ma non hai detto quale dovrebbe essere il testo. Devo indovinare anche:

Il file strings.xml deve essere utilizzato per testi che potrebbero cambiare per lingue diverse. Se si desidera solo per modificare il testo di un contatore, non si deve fare tramite strings.xml come i numeri sono universali :)

cercare di andare con quel:

display.setText(String.valueOf(counter)); 
+0

Grazie, sì, ho scritto io in modo rapido, quindi non era all'altezza di una domanda veloce standard se non ti dispiace, questo funziona bene display.setText (String.valueOf (counter)); ma lo useresti solo per un valore o un numero e useresti display.setText ("") per le lettere o una stringa? –

+0

In qualche modo non capisco il problema che hai. Il file strings.xml contiene costanti, quindi non è possibile modificare il testo che è memorizzato lì. Se vuoi cambiare il testo in una stringa specifica che potrebbe essere fornita dall'utente, dovresti farlo come una tastiera e avere un pulsante per ogni lettera. Quindi aggiungi la lettera alla stringa che viene visualizzata ...la stringa memorizzata dovrebbe essere solo il valore iniziale predefinito e non può essere modificato in runtime. Sono un po 'perso perché non ho quello che ti serve e voglio ... – WarrenFaith

+0

Scusa se capisco cosa intendi ora, mi dispiace. –

0

Si desidera utilizzare il metodo setText().

display.setText("text"); 
+0

Yer ho provato "display.setText (" text ");" Funziona ma solo per la variabile di visualizzazione vuole cambiare la variabile stringa. e "string.setText (" testo ");" non funziona:/ –

+1

per cambiare la stringa hai appena provato 'string =" ciao mondo ";' poi 'display.setText (stringa);' –

+0

Sì, hai ragione, devo usare il metodo setText contento di averlo voi ragazzi qui per aiutare :) –

3

Non è possibile modificare la testo assegnato agli elementi <string> di un file /res/values/strings.xml in fase di runtime. Sono costanti così efficacemente final.

Non è inoltre possibile modificare un file xml di layout in fase di esecuzione. Se hai creato un layout con un TextView con l'attributo impostato su una stringa di risorsa iniziale, questo è fondamentalmente un valore "iniziale" e non può essere modificato in altro al momento dell'esecuzione.

+0

ma sto cambiando il mio androide: testo dal mio file java .. –

+0

sei sicuro che sia vero? puoi cambiare un layout xml in runtime:/ –

+0

"ma sto cambiando il mio androide: il testo dal mio file java". - No non sei. Stai usando 'setText (...)' che è un metodo Java e non ha nulla a che fare con il file di layout XML. L'attributo 'android: text' è usato dal inflater del layout quando chiamate' setContentView (R.layout.main) '. L'inflater di layout elabora gli elementi dell'interfaccia utente XML come 'TextView'. Quando incontra un elemento 'android: text', chiama' setText (...) 'passando il testo da quell'attributo. – Squonk