2012-01-08 30 views
6

Esta va a ser una pregunta real de novato, así que tenga piedad. Intento crear un cuadro de mensaje en un evento de clic de botón en Android. He leído algunos ejemplos en StackOverflow, pero parece que no capto el concepto. En mi archivo main.xml, he definido el xml botón de la siguiente manera:Button Click Event en Android

<Button 
android:id="@+id/btnOK" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Display Message" 
android:onClick="onBtnClicked" /> 

He leído en uno de los postes que necesito para registrar el evento de clic en el diseño XML. Entonces eso es lo que pensé que hice en el código XML anterior. Luego, en mi archivo de código java, he escrito el siguiente código:

package com.example.helloandroid; 

import android.app.Activity; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 

public class HelloAndroid extends Activity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);   
    } 

    public void onBtnClicked(View v) 
    { 
     if(v.getId() == R.id.btnOK) 
     { 
      MessageBox("Hello World"); 
     }  
    } 

    public void MessageBox(String message) 
    { 
     Toast.makeText(this, message, Toast.LENGTH_SHORT); 
    } 
} 

Para mí, esto tiene sentido. Pero el cuadro de mensaje no aparece cuando hago clic en el botón. De las importaciones de código anteriores, puede ver que ya he probado algunas soluciones sin éxito. ¿Me estoy perdiendo un oyente? Pensé que la definición en el código XML crearía esto para mí?

Gracias de antemano :-)

Respuesta

6

Cambio

Toast.makeText(this, message, Toast.LENGTH_SHORT); 

Para

Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); 

El show() se asegura de que realmente mostrar la tostada, de lo contrario sólo se está creando la tostada.

+0

¡Muchas gracias! Esto funcionó! –

1

Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); - necesita llamar al método show() ya que ahora solo está creando el tostado sin mostrarlo.

+0

¡Muchas gracias! –

0

la actividad tienen que poner en práctica un View.OnClickListener, y poner en práctica el método onClick (Ver v)

en el método onCreate, hay que inicializar el botón (después de la instrucción setContentView):

Button b = (Button) findViewById(R.id.btnOK); 
b.setOnClickListener(this); 

en el método onClick:

public void onClick(View v) { 
    switch(v.getId()){ 
    case R.id.btnOK: 
     /* the instruccions of the button */ 
     break; 
    } 
} 
+0

¡Gracias por los comentarios! –

1
Toast.makeText(this, message, Toast.LENGTH_SHORT); 

esto es correcto

Toast.makeText(this, message, Toast.LENGTH_SHORT).show();