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

标签 java android timer

我已经定义了两个单独的方法,将 numberPickers 的值设置为倒数计时器中文本的值。唯一的问题是我只能将计时器设置为小时或分钟,但我无法将这两个值结合起来。我怎样才能将这两种方法结合起来,形成一种结合这两种值(value)的方法。

这是两种方法...

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

感谢所有帮助过的人:)

最佳答案

好的,为什么不将数据选择器的状态保存在变量中以便在另一个变量中使用它们? (我想秒数始终为 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();
    }
});

编辑,我忘了给定时器添加变量

关于java - 将两个 numberPicker 值小时和分钟组合成一个倒数计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279363/

相关文章:

java - 渐变不画

timer - x86 处理器中的时间源

java - Kotlin 如何推断 Java 方法参数的可空性?

java.lang.NoClassDefFoundError : Failed resolution of: Landroid/support/v4/graphics/ColorUtils;

android - 如何在 ListView 项目单击上使用媒体播放器的单个实例

java - 为什么打开 Web 浏览器时 Java 的计时会受到影响?

timer - 如何在一天中的特定时间通过自动热键打开文件?

java - Spring Security SecurityContextHolder.getContext().getAuthentication() 返回 null

java - 创建一个带有 Swing 提交按钮的表单面板

java - 从 C 类访问 A 类内部 B 类的值