如何从android中的倒数计时器更新textview?

时间:2016-02-10 03:02:17

标签: android dialog countdowntimer

当用户获胜超过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();

    };

}

额外功劳:文本后面的对话框中显示的图像背景是透明的,因为我想查看此弹出窗口后面的插槽。但它的三面有白色。有什么想法吗?

1 个答案:

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