Na ekranie wyświetlane są cztery przyciski. Po naciśnięciu przycisku odtwarzacz multimedialny odtwarza dźwięk. Problem, który mam, polega na tym, że wdrażam setClickable dla wszystkich przycisków w tym samym czasie.Android. Jak ustawić wszystkie przyciski, które można klikać lub klikać w tym samym czasie za pomocą metody setClickable?
Po kliknięciu przycisku chcę, aby wszystkie przyciski były niemożliwe do skasowania, dopóki odtwarzacz multimedialny nie zakończy odtwarzania dźwięku związanego z kliknięciem przycisku. Następnie chcę, aby wszystkie przyciski były ponownie ustawione, aby można je było kliknąć.
Kod działa poprawnie, dopóki nie włączę kodu setClickable - kod dla buttonOne jest wyłączony w poniższym przykładzie kodu. Telefon testowy blokuje się i mówi, że aplikacja się zatrzymała i próbuje ponownie.
Niestety, bez funkcji setClickable, użytkownik może nacisnąć dowolny przycisk i usłyszeć dowolny dźwięk przed zakończeniem odtwarzania pierwszego wybranego dźwięku.
Dziękuję za poświęcony czas i pomoc.
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);
}
dziękuję za szybką odpowiedź. Spróbuję tego. – John
Dziękuję Damon. – John
Użyłem twojej techniki metody stanu boolowskiego - użyłem metody setClickable w metodzie, ponieważ używałem metody myClickHandler. – John