将两个numberPicker值小时和分钟组合成倒数计时器

时间:2015-12-15 01:03:57

标签: java android timer

我已经定义了两个单独的方法,将numberPickers的值设置为倒数计时器中文本的值。唯一的问题是我只能将计时器设置为小时或分钟,但我无法将这两个值组合在一起。我如何将这两种方法结合起来制作一个结合了两个值的方法。

以下是两种方法......

noPickerHours.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {


        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            timer = new CounterClass((newVal * 60 * 1000), 1000);
            long millis = (newVal * 60 * 1000);
            String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
            textViewTime.setText(hms);
        }
    });

    noPickerMinutes.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {


        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
            timer = new CounterClass((newVal * 60 * 1000), 1000);
            long millis = (newVal * 60 * 1000);
            String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
            textViewTime.setText(hms);
        }
    });

感谢任何帮助过的人:)

1 个答案:

答案 0 :(得分:1)

好的,为什么不在变量中保存datapicker的状态以在另一个中使用它们? (我想秒数总是0,因为你不会在代码中改变它们)

int hours = 0;
int minutes = 0;
private void setTimer () {
    timer = new CounterClass((hours *60 * 60 * 1000) + (minutes * 60 *1000), 1000);
    String hms = String.format("%02d:%02d:00", ), hours, minutes);
    textViewTime.setText(hms);
}
...
noPickerHours.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        hours = newVal;
        setTimer();
    }
});

noPickerMinutes.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        minutes = newVal;
        setTimer();
    }
});

编辑,我忘记将变量添加到计时器

相关问题