我正在做一个相当圆的制作纸牌应用程序的方式。现在正在发生的事情是,我正在尝试点击一个按钮,该按钮应该从牌组处理牌到你可以打牌的状态。但是,听众永远不会触发。
我输入了一个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 :(得分:0)
首先你应该在buttonSound.prepare()
之前使用buttonSound.start()
(我更喜欢使用SoudPool Class而不是Mediaplayer来获得声音效果,因为它在内存中的成本更低)。其次,您可以分享dealCardsToPlayableStack()
方法吗?您可以将其置于onClick()
方法之外(在onCreate())
中,如果您有相同的行为,则问题出在此方法中,而不是OnClick()
方法。