2011-04-14 15 views
5

Estoy tratando de hacer un contador básico.¿Se está actualizando una vista de texto después de hacer clic en el botón?

La idea es que el usuario presiona el botón y la aplicación muestra cuántas veces se presionó el botón.

Mi problema es que no estoy seguro de cómo actualizar la vista de texto. Tengo entendido que las partes XML recuperan las cadenas, que se graban en piedra en tiempo de ejecución. Entonces, ¿cómo se supone que debo "actualizar" algo que es "final"?

Mi comprensión es que cuando se presiona el botón, incremente num en 1. Luego, obtiene la cadena de solicitud (Clics:% d) y lo muestra en la pantalla. Sin embargo, cada vez que ejecuto esto, simplemente falla.

public class HelloAndroid extends Activity{ 
/** Called when the activity is first created. */ 

int num = 0; 
TextView tView; 
Button clickhere; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    tView = (TextView) findViewById(R.id.textView1); 
    clickhere = (Button) findViewById(R.id.button1); 

    clickhere.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      num++; 
      String display = String.format(getString(R.string.prompt), num); 
      tView.setText(display); 
      setContentView(tView); 

     } 
    }); 

} 
} 

Cualquier ayuda sería apreciada.

+0

Solo una rápida adición tpo las respuestas anteriores: No necesita llamar a setContentView (tView); en el evento onClick(). – Aleadam

+0

Muchas gracias, Aleadam! ¡Eso era justo lo que necesitaba para que funcionara! – RTL

+0

me alegra que lo hayas puesto en funcionamiento, aunque el trabajo principal fue realizado por Brian y Corey. +1 para ellos. También veo que es su primera pregunta aquí, así que felicitaciones a usted por una pregunta bien formateada que demuestra el esfuerzo realizado antes de preguntar. +1 para ti también :) – Aleadam

Respuesta

4

se está ajustando el TextView cuando se hace clic (no cuando se hace clic en el botón), que supongo que no es lo que pretende hacer. He actualizado su código a continuación para configurar TextView cuando se hace clic en el botón.

public class HelloAndroid extends Activity{ 
/** Called when the activity is first created. */ 

int num = 0; 
TextView tView; 
Button clickhere; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    tView = (TextView) findViewById(R.id.textView1); 
    clickhere = (Button) findViewById(R.id.button1); 

    clickhere.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      String display = String.format(getString(R.string.prompt, Integer.toString(++num))); 
      tView.setText(display); 
     } 
    }); 

    //you don't need an event handler on the TextView (given the description of the problem) 

} 
} 
+0

Gracias, me di cuenta de esto justo antes de que respondiera y arreglé esa parte, pero aún me cuelgo cada vez que intento hacer clic. – RTL

2
clickhere.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     num++; 
     tView.setText(Integer.toString(num)); 
    } 
}); 

esto va a configurar su TextView igual a num

+0

Gracias por su ayuda pero, veo que esto cambia textView. Pero, ¿cómo hago que muestre el cambio? – RTL

+0

debería mostrar el cambio tan pronto como llame a setText – corey

Cuestiones relacionadas