0

TimePicker在我的应用程序中有一个可以选择播放歌曲的时间量,我在让剩余时间正确显示时遇到问题CountDownTimer,当然一切都在几毫秒内发生在幕后,我认为我做正确的转换,但我在屏幕上看到的只是完全错误的值。

当我只是使用 3600000(1hour) 作为第一个参数进行测试 CountDownTimer 时,一切正常,但是当我将 timepicker 设置为 0 并将分钟设置为 1 时,就像我只想要 1 分钟的播放一样,它显示 12 小时,看起来像是随机的分钟和秒槽中的值。tp.getCurrentHour();设置为零时返回零tp.getCurrentMinute();并按预期返回一,这部分似乎发生了一些事情,但还不能弄清楚:

游戏时间 = (小时 * (60 * 60 * 1000)) + (分钟 * (60 * 1000)); starttime = SystemClock.elapsedRealtime();

为什么tv2.setText("totaltest "+startime+playtime);显示值 6000046929803???这显然是错误的……

这是其余的代码:

                TimePicker tp =(TimePicker)findViewById(R.id.timePicker1);

                    public void onClick(View v) {
                                    // TODO Auto-generated method stub
                                    long hour = tp.getCurrentHour();
                                    long min = tp.getCurrentMinute();
                                    playtime = (hour * (60 * 60 * 1000)) + (min * (60 * 1000));
                                    startime = SystemClock.elapsedRealtime();
tv2.setText("totaltest "+startime+playtime);
            timer = new CountDownTimer(startime+playtime,1000){

                                @Override
                                public void onFinish() {
                                    tv.setText("finished");
                                }

                                //@SuppressLint("ParserError")
                                @Override
                                public void onTick(long millisUntilFinished) {

                                    String display = DateUtils.formatElapsedTime(millisUntilFinished/1000);

                                    tv.setText(display);

                                }

                            }.start();
4

1 回答 1

1

尝试:

String display = DateUtils.formatElapsedTime(millisUntilFinished/1000);

这会为您完成转换。

和:

timer = new CountDownTimer(playtime,1000){ 

因为 CounterDownTimer 期望运行的毫秒数。

于 2012-10-08T18:33:20.327 回答