【问题标题】:Reset time picker重置时间选择器
【发布时间】:2019-08-05 09:37:49
【问题描述】:

当我的时间选择器对话框出现时,我想选择两个不同的时间,但在它第一次保存后,时间选择器会保存之前选择的小时并设置为选择分钟。基本上,我想刷新小部件,以便在我第一次单击确认后,时间选择器设置为选择小时而不是分钟。

我尝试重新显示弹出窗口,以便重置小部件,并且它可以工作,但是由于我在弹出布局上有一些文本视图,并且以编程方式设置了边距,因此布局变得混乱,我想确定是否有一种更简单的方法,不需要重新配置我的布局。

时间选择器基本上与被调用的布局不同,它被称为对话框。

Dialog mydialog;
mydialog.setContentView(R.layout.timepickerpopup);

a[0] 在 on create 方法上设置为 true,在弹出布局配置之外

done.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if (Build.VERSION.SDK_INT >= 23 && a[0]) {
            hour[0] = timePicker.getHour();
            min[0] = timePicker.getMinute();

            timefrom.setText(String.format(Locale.getDefault(),
                "%02d:%02d", hour[0], min[0]));

            a[0] = false;
        }
        else if (Build.VERSION.SDK_INT >= 23 &&  !a[0]) {
            hour[1] = timePicker.getHour();
            min[1] = timePicker.getMinute();

            timeuntil.setText(String.format(Locale.getDefault(),
                "%02d:%02d", hour[1], min[1]));

            mydialog.dismiss();

        }
        else if (a[0]) {
            hour[0] = timePicker.getCurrentHour();
            min[0] = timePicker.getCurrentMinute();

            timefrom.setText(String.format(Locale.getDefault(),
                "%02d:%02d", hour[0], min[0]));

            a[0] = false;
        }
        else {
            hour[1] = timePicker.getCurrentHour();
            min[1] = timePicker.getCurrentMinute();

             timeuntil.setText(String.format(Locale.getDefault(),
                "%02d:%02d", hour[1], min[1]));

            mydialog.dismiss();
        }
    }
});

【问题讨论】:

    标签: java android android-timepicker


    【解决方案1】:

    我最终使用了 2 个不同的时间选择器并在它们之间切换以获得我想要的 2 个不同的时间。

    TimePicker timePicker1 = myDialog.findViewById(R.id.timePicker1);
    TimePicker timePicker2 = myDialog.findViewById(R.id.timePicker2);
    

    如果有人需要,这里是代码:

    if (Build.VERSION.SDK_INT >= 23 && timePicker1.getVisibility() == View.VISIBLE){
    
                    hour[0] = timePicker1.getHour();
                    min[0] = timePicker1.getMinute();
    
                    timefrom.setText(String.format(Locale.getDefault(),
                    "%02d:%02d",hour[0], min[0]));
    
                    timePicker1.setVisibility(View.GONE);
                    timePicker2.setVisibility(View.VISIBLE);
    
                    a[0] = true;
    
                    if (a[0] && a[1]){
                        mydialog.dismiss();
                    }
    
    }else if (Build.VERSION.SDK_INT >= 23 &&  timePicker2.getVisibility() == 
              View.VISIBLE) {
    
                    hour[1] = timePicker2.getHour();
                    min[1] = timePicker2.getMinute();
    
                    timeuntil.setText(String.format(Locale.getDefault(),
                    "%02d:%02d",hour[1], min[1]));
    
                     if (a[0]) {
                        mydialog.dismiss();
                    }else {
                        timePicker1.setVisibility(View.VISIBLE);
                        timePicker2.setVisibility(View.GONE);
                    }
                    a[1] = true; 
    }else if (timePicker1.getVisibility() == View.VISIBLE){
    
                    hour[0] = timePicker1.getCurrentHour();
                    min[0] = timePicker1.getCurrentMinute();
    
                    timefrom.setText(String.format(Locale.getDefault(),
                    "%02d:%02d",hour[0], min[0]));
    
                    timePicker1.setVisibility(View.GONE);
                    timePicker2.setVisibility(View.VISIBLE);
    
                    a[0] = true;
    
                    if (a[0] && a[1]){
                        mydialog.dismiss();
                    }
    
    }else {
                    hour[1] = timePicker2.getCurrentHour();
                    min[1] = timePicker2.getCurrentMinute();
    
                    timeuntil.setText(String.format(Locale.getDefault(),
                    "%02d:%02d",hour[1], min[1]));
    
                     if (a[0]) {
                        mydialog.dismiss();
                    }else {
                        timePicker1.setVisibility(View.VISIBLE);
                        timePicker2.setVisibility(View.GONE);
                    }
                    a[1] = true;
    }
    

    在我制作的代码的另一部分,您可以通过按其文本(从/直到)来选择要设置的时间,这就是为什么我需要 a[0] 在关闭对话框之前为真(所以两次除非您取消,否则将在完成时设置)。

    如果有人知道我的问题的答案,或者对我的代码有一些改进,我是新手,如果在这里分享,将不胜感激。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      相关资源
      最近更新 更多