当用户获胜超过100个令牌时,id会像弹出一个图像并计算代币并播放一些声音。添加一点..比萨饼。但是无论如何,我要么得到一个nullpointer,要么得到第一个数字,不计算。
我该如何做到这一点?
到目前为止我有这种方法。改变它围绕一堆实验。
public void bonusPop(int mWinnings){
final int count = 0;
//token prize popup1
final Dialog payDialog = new Dialog(GemSlotMachineActivity.this);
payDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
payDialog.setContentView(R.layout.win_pop);
payDialog.setCancelable(true);
payDialog.show();
new CountDownTimer(mWinnings * 50, 50) {
public void onTick(long millisUntilFinished){
//count++;
TextView winText = (TextView) payDialog.findViewById(R.id.winText);
winText.setText(Float.toString(count));
}
public void onFinish() {
finish();
}
}.start();
};
}
额外功劳:文本后面的对话框中显示的图像背景是透明的,因为我想查看此弹出窗口后面的插槽。但它的三面有白色。有什么想法吗?
答案 0 :(得分:0)
尝试初始化此代码:
TextView winText = (TextView) payDialog.findViewById(R.id.winText);
在CountDownTimer
之外而不是Float.toString(count)
使用String.valueOf(count)
。另外我看到你在count
中使用了final,因为你增加了它,所以只需将它作为全局变量。我修改了你的代码,如下所示。尝试它,如果它的工作
int count = 0;
public void bonusPop(int mWinnings){
final Dialog payDialog = new Dialog(GemSlotMachineActivity.this);
payDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
payDialog.setContentView(R.layout.win_pop);
payDialog.setCancelable(true);
payDialog.show();
TextView winText = (TextView) payDialog.findViewById(R.id.winText);
new CountDownTimer(mWinnings * 50, 50) {
public void onTick(long millisUntilFinished){
count++;
winText.setText(String.valueOf(count));
}
public void onFinish() {
finish();
}
}.start();
}