Penso che si sta equivoco qualcosa di molto importante. Le stringhe Java sono immutabili, il che significa che non è possibile cambiarle.
"Come posso, in qualche modo, modificare il testo nella stringa?"
Non è possibile. Il testo nella stringa non può essere modificato. È immutabile. Qualsiasi "soluzione" che implica la modifica del testo in una stringa NON FUNZIONERÀ in Java. (Capito?)
Quando si esegue questa operazione:
output.setText(outputString);
outputString = "";
l'assegnazione non cambia il valore visualizzato nel campo di testo. Cambia semplicemente la stringa a cui fa riferimento la variabile locale outputString
.
E quando si esegue questa operazione:
output.setText("");
output.setText(outputString);
non causa outputString
per cambiare. Cambia semplicemente il testo visualizzato su nulla e poi lo cambia immediatamente a qualsiasi cosa a cui si riferisce attualmente lo outputString
.
Se si desidera modificare il valore visualizzato nel campo di testo a nulla, basta fare questo:
output.setText("");
Forse l'altra cosa che hai sbagliato nel vostro pensiero è che si pensa che questo :
output.setText(outputString);
imposta una relazione tra il campo di testo output
e la variabile outputString
... in modo tale che quando l'utente digita nel campo, la variabile outputString
è magicamente aggiornati. NON è così. In effetti, NON può essere così, perché non puoi passare l'indirizzo della variabile.
Infatti, output.setText(outputString);
appena passa il valore di outputString
all'oggetto casella di testo. Se e quando l'utente digita qualcosa nella casella, i caratteri vengono memorizzati da qualche altra parte e restituiti al codice solo ... come una nuova stringa ... quando il codice chiama output.getText()
.
Okay ragazzi, ho appena provato la stessa risposta che mi è stata data 5 volte. Non funziona. Metto output.setText (""); immediatamente prima di output.setText (outputString) ;, ma outputString non cambia, quindi contiene ancora il pezzo precedente di testo. – kullalok
post codice completo ... –
"immediatamente prima di output.setText (outputString)". Ovviamente questo non cancellerebbe il testo, lo stai solo sovrascrivendo. Se si desidera cancellare il testo, è necessario chiamare setText ("") DOPO. –