onClickListener没有触发

时间:2011-11-30 08:13:25

标签: android android-widget

我正在做一个相当圆的制作纸牌应用程序的方式。现在正在发生的事情是,我正在尝试点击一个按钮,该按钮应该从牌组处理牌到你可以打牌的状态。但是,听众永远不会触发。

我输入了一个system.out.println语句来测试它是否曾经使用监听器进入代码块,但它没有。

    public class SolitaireGame extends Activity {
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.game);

      buttonSound = MediaPlayer.create(SolitaireGame.this, R.raw.button_click);
      //instance variables
      theDeck = new Deck();
      botCardStacks = new ArrayList<BotCardStack>(7);
      aceStacks = new ArrayList<AceCardStack>(4);
      playableCards = new CardStack(52);

      deckButton = (Button) this.findViewById(R.id.deckButton);
      deckButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            buttonSound.start();
            dealCardsToPlayableStack();                
          }
        });

根据要求,这是我为可玩堆栈方法添加卡片

    public void dealCardsToPlayableStack() {
      Stack<Card> tempStack = new Stack<Card>();
      int i = 0;
      Card temp, temp1, temp2, temp3;

      if(theDeck.getValueOfNext() == 0) {
          while(!playableCards.isEmpty()) {
              temp = playableCards.popCard();
              temp.setVisible(false);
              tempStack.push(temp);
          }
          while(!tempStack.isEmpty()) {
              theDeck.addCard(tempStack.pop());
          }
      }

      else if(theDeck.getValueOfNext() >= 3) {
          temp1 = theDeck.popCard();
          temp1.setVisible(true);
          temp2 = theDeck.popCard();
          temp2.setVisible(true);
          temp3 = theDeck.popCard();
          temp3.setVisible(true);

          playableCards.addCard(temp3);
          playableCards.addCard(temp2);
          playableCards.addCard(temp1);
      }

      else if(theDeck.getValueOfNext() == 2) {
          temp1 = theDeck.popCard();
          temp1.setVisible(true);
          temp2 = theDeck.popCard();
          temp2.setVisible(true);

          playableCards.addCard(temp2);
          playableCards.addCard(temp1);
      }

      else if(theDeck.getValueOfNext() == 1) {
          temp1 = theDeck.popCard();
          temp1.setVisible(true);

          playableCards.addCard(temp1);
      }
    }

1 个答案:

答案 0 :(得分:0)

首先你应该在buttonSound.prepare()之前使用buttonSound.start()(我更喜欢使用SoudPool Class而不是Mediaplayer来获得声音效果,因为它在内存中的成本更低)。其次,您可以分享dealCardsToPlayableStack()方法吗?您可以将其置于onClick()方法之外(在onCreate())中,如果您有相同的行为,则问题出在此方法中,而不是OnClick()方法。