gpt4 book ai didi

java - 重置时间选择器

转载 作者:行者123 更新时间:2023-11-30 12:03:57 24 4
gpt4 key购买 nike

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

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

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

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

最佳答案

我最终使用了 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;
}

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

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

关于java - 重置时间选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57355864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com