Android. Как с помощью setClickable сделать все кнопки активными или неактивными одновременно?

На экране отображаются четыре кнопки. При нажатии кнопки медиаплеер воспроизводит звук. Проблема, с которой я столкнулся, заключается в реализации setClickable для всех кнопок одновременно.

После нажатия кнопки я хочу, чтобы все кнопки не нажимались, пока медиаплеер не закончит воспроизведение звука, связанного с нажатием кнопки. Затем я хочу, чтобы все кнопки снова стали активными.

Код работает нормально, пока я не включу код setClickable - код для buttonOne отключен в моем примере кода ниже. Тестовый телефон зависает и сообщает мне, что приложение остановлено, и я могу повторить попытку.

К сожалению, без setClickable, пользователь мог нажать любую кнопку и услышать любой звук до того, как закончится воспроизведение первого выбранного звука.

Спасибо за ваше время и помощь.

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 );

    }
6
задан John 15 September 2010 в 15:20
поделиться