2012-01-02 9 views
6

En la carpeta/res/values ​​de mi proyecto android tengo una cadena y se hace referencia en una vista de texto en mi archivo xml, quiero cambiar la cadena en mi archivo java.android (cambiar cadena en código java)

Como puede ver a continuación en el código he hecho una variable de cadena y luego debajo he establecido a qué variable de cadena se le asigna, que es donde se encuentra la cadena. donde tengo "aquí" posado en el código que es donde quiero cambiar a cadena en la carpeta de valores. pero no sé qué código usar para configurarlo.

Podría simplemente cambiar el texto en una vista de texto de mi archivo java, que sé cómo hacer, pero eso es una manera antigua y establece una advertencia así que prefiero usar una cadena que es la mejor manera para hacerlo

Con mi conocimiento del cambio de texto en una vista de texto, básicamente he adivinado mi camino hasta esta etapa, pero no sé cómo ir más lejos, ¿podría alguien darme algún consejo sobre qué hacer, gracias?

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

He eliminado las referencias a eclipse y la etiqueta eclipse de esta pregunta, ya que no está relacionada. – Squonk

+1

Según entiendo, esas cadenas deben ser constantes, por lo que no creo que pueda cambiarlas programáticamente. Todavía soy nuevo en el desarrollo de Android, así que no me dejes así. – Marcin

+0

@Marcin: Entiendes la idea - ver mi respuesta. – Squonk

Respuesta

2

Nos dijo que había muchos cambios de texto, pero no dijo cuál debería ser el texto. También necesito adivinar:

El archivo strings.xml debe usarse para textos que pueden cambiar para diferentes idiomas. Si lo que desea es cambiar el texto de un contador, no debe hacerlo a través de strings.xml que los números son universales :)

tratar de ir con eso:

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

Gracias, sí, escribí lo rápido, así que no estaba a la altura de una pregunta rápida estándar mejor si no te importa, esto funciona bien display.setText (String.valueOf (counter)); pero ¿solo usarías eso para un valor o un número y usarías display.setText ("") para letras o una cadena? –

+0

De alguna manera no entiendo el problema que tienes. Strings.xml contiene constantes, por lo que no puede cambiar el texto que está almacenado allí. Si desea cambiar el texto a una cadena específica que podría proporcionar el usuario, debe hacerlo como un teclado y tener un botón para cada letra. Luego agrega la letra a la cadena que se muestra ...la cadena almacenada solo debe ser su valor de inicio predeterminado y no puede modificarse en tiempo de ejecución. Estoy un poco perdido ya que no obtengo lo que realmente necesitas y quieres ... – WarrenFaith

+0

Disculpa, entiendo lo que quieres decir ahora, lo siento. –

0

Querrá utilizar el método setText().

display.setText("text"); 
+0

Has probado "display.setText (" text ");" Funciona, pero solo para la variable de visualización desea cambiar la variable de cadena. y "string.setText (" text ");" no funciona:/ –

+1

para cambiar la cadena, ¿acabas de probar 'string =" hello world ";' then 'display.setText (cadena);' –

+0

Sí, tienes que usar el método setText, contento de haberlo hecho. Ustedes aquí para ayudar :) –

3

No se puede modificar el texto asignado a <string> elementos de un /res/values/strings.xml archivo en tiempo de ejecución. Son constantes tan eficazmente final.

Tampoco puede cambiar un archivo xml de diseño en tiempo de ejecución. Si ha creado un diseño con TextView que tiene su atributo android:text establecido en alguna cadena de recursos inicial, eso es básicamente un valor 'inicial' y no se puede cambiar a otra cosa en tiempo de ejecución.

+0

pero estoy cambiando mi android: texto de mi archivo java ... –

+0

¿estás seguro de que es cierto? puede cambiar un diseño xml en tiempo de ejecución:/ –

+0

"pero estoy cambiando mi android: texto de mi archivo java". - No, no lo eres. Está utilizando 'setText (...)' que es un método de Java y no tiene nada que ver con el archivo de diseño XML. El atributo 'android: text' es utilizado por el inflador de diseño cuando llamas a' setContentView (R.layout.main) '. El diseño inflador procesa los elementos de la interfaz de usuario XML, como 'TextView'. Cuando encuentra un elemento 'android: text', llama a' setText (...) 'pasando el texto de ese atributo. – Squonk

Cuestiones relacionadas