La pantalla muestra cuatro botones. Cuando se presiona un botón, un reproductor de medios reproduce un sonido. El problema que tengo es implementar setClickable para todos los botones al mismo tiempo.Android. ¿Cómo configuro todos los botones haciendo clic o no haciendo clic al mismo tiempo usando setClickable?
Una vez que se hace clic en un botón, quiero que no se puedan hacer clic en todos los botones hasta que el reproductor de medios termine de reproducir el sonido asociado con el clic del botón. Luego quiero que todos los botones se vuelvan a hacer clic.
El código funciona bien hasta que active el código setClickable - el código para buttonOne está deshabilitado en mi ejemplo de código a continuación. El teléfono de prueba se bloquea y me dice que la aplicación se ha detenido y vuelve a intentarlo.
Desafortunadamente, sin setClickable, el usuario puede presionar cualquier botón y escuchar cualquier sonido antes de que el primer sonido seleccionado termine de reproducirse.
Gracias por su tiempo y ayuda.
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageButton;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
public class hipsterdoofus extends Activity
{
private int asoundfilenumber;//integer id of sound file to be played
public ImageButton buttonOne;
public ImageButton buttonTwo;
public ImageButton buttonThree;
public ImageButton buttonFour;
public void myClickHandler(View v) {
switch (v.getId())
{
case R.id.buttonOne:
asoundfilenumber=0x7f040000;
break;
case R.id.buttonTwo:
asoundfilenumber=0x7f040001;
break;
case R.id.buttonThree:
asoundfilenumber=0x7f040002;
break;
case R.id.buttonFour:
asoundfilenumber=0x7f040003;
break;
}//closes switch test
freezeButtonsAndPlaySoundThenUnfreezeButtons();
}//closes onClick
public void freezeButtonsAndPlaySoundThenUnfreezeButtons()
{
**//buttonOne.setClickable(false);//sets buttonOne to unclickable**
MediaPlayer mp = MediaPlayer.create(getBaseContext(), asoundfilenumber);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener()//listens for player to finish then releases player
{
@Override
public void onCompletion(MediaPlayer mpalmost)
{
mpalmost.release();
}
});
**//buttonOne.setClickable(true); //sets buttonOne to clickable**
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
gracias por su rápida respuesta. Voy a intentar esto. – John
Gracias Damon. – John
Utilicé su técnica de método de estado booleano. Usé setClickable dentro del método porque estaba usando el método myClickHandler. – John