Android 安卓如何使用setClickable将所有按钮同时设置为可点击或不可点击?

Android 安卓如何使用setClickable将所有按钮同时设置为可点击或不可点击?,android,button,click,clickable,Android,Button,Click,Clickable,屏幕显示四个按钮。按下按钮时,媒体播放器会播放声音。我遇到的问题是同时为所有按钮实现setClickable 单击按钮后,我希望所有按钮都不可单击,直到媒体播放器播放完与按钮单击相关的声音。然后我希望所有的按钮都设置回可点击状态 在我启用setClickable代码之前,代码运行良好——buttonOne的代码在下面的代码示例中被禁用。测试电话锁定,并告诉我应用程序已停止,请重试 不幸的是,如果没有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 );

    }

我认为您正在查找的属性将被设置为启用(使用布尔值设置)

一些代码

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

如果要禁用按钮,请使用View类的方法setEnabled(false)

我使用了您的布尔状态方法技术——我在方法内部使用了setClickable,因为我使用的是myClickHandler方法。另一个问题是我遗漏了buttonOne=(ImageButton)findViewById(R.id.buttonOne);在我的公共void onCreate(Bundle savedInstanceState)中。在媒体播放器发布之前,您对enableDisable调用的放置使代码正常工作。再次感谢。