2011-11-30 125 views
1

我正在做一個關於製作紙牌應用程序的方法。現在發生的事情是,我正在嘗試點擊一個按鈕,該按鈕應該可以將牌從卡組轉換爲可以玩卡的狀態。但是,聽衆永遠不會觸發。onClickListener沒有觸發

我放了一個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); 
     } 
    } 

回答

0

首先,你應該使用buttonSound.prepare()buttonSound.start()之前(我更喜歡使用SoudPool類,而不是媒體播放器的聲音效果,因爲它是成本更低在記憶中)。其次,你可以分享dealCardsToPlayableStack()方法。你可以把它放在onClick()方法外(在onCreate()),如果你有相同的行爲,那麼問題是這種方法,而不是OnClick()方法。

+0

對不起,響應超級晚了。決賽和假期之間想出了和我在別處度過我的時間。 – bwoods89