6

画面には 4 つのボタンが表示されます。ボタンを押すと、メディア プレーヤーがサウンドを再生します。私が抱えている問題は、同時にすべてのボタンに 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 );

    }
4

2 に答える 2

4

あなたが探しているプロパティはsetEnabled(ブール値で設定)になると思います

いくつかのコード;

public void enableDisableButtons(Boolean state){
    buttonOne.setEnabled(state);
    buttonTwo.setEnabled(state);
    buttonThree.setEnabled(state);
    buttonFour.setEnabled(state);
}

public void freezeButtonsAndPlaySoundThenUnfreezeButtons()
{
    enableDisableButtons(false); // disable buttons

    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) 
        {
            enableDisableButtons(true); // Re-enable buttons
            mpalmost.release();
        }
      });
}
于 2010-09-15T15:31:28.847 に答える
1

ボタンを無効にする場合は、View クラスのメソッド setEnabled(false) を使用します。

于 2014-09-12T10:15:03.480 に答える