如何从 android 中的倒数计时器更新文本视图?

How to update a textview from a countdowntimer in android?

当用户赢得超过 100 个代币时,id 会弹出一个图像并计算代币数量并播放一些声音。添加一点.. pizzazz。但是无论我怎么尝试,我要么得到一个空指针,要么得到第一个数字,不计算。

我怎样才能做到这一点?

这是我目前的方法。围绕一堆实验改变了它。

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();

    };

}

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

尝试初始化此代码:

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