TimePicker 在每个 TextView 中显示相同的时间
TimePicker showing same time in every TextView
我正在开发一个模块,我必须允许用户在不同的文本视图中设置 3 个不同的时间,因为我正在使用 TimePicker。
但是每当我 select 在 TimePicker 中计时时,它会在其他两个 TextView 中显示相同的时间。
那么可能是什么原因呢?
private String textViewTime1, textViewTime2, textViewTime3;
private String mTime1, mTime2, mTime3;
// On clicking Time picker
public void setTime(View v){
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
false
);
tpd.setThemeDark(false);
tpd.show(getFragmentManager(), "Timepickerdialog");
}
// Obtain time from time picker
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
if (minute < 10) {
mTime1 = hourOfDay + ":" + "0" + minute;
mTime2 = hourOfDay + ":" + "0" + minute;
mTime3 = hourOfDay + ":" + "0" + minute;
} else {
mTime1 = hourOfDay + ":" + minute;
mTime2 = hourOfDay + ":" + minute;
mTime3 = hourOfDay + ":" + minute;
}
textViewTime1.setText(mTime1);
textViewTime2.setText(mTime2);
textViewTime3.setText(mTime3);
}
But whenever I select time in TimePicker it showing same time in other
two TextViews.
因为,你设置的时间是一样的!
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
if (minute < 10) {
/// Time set to mTime1
mTime1 = hourOfDay + ":" + "0" + minute;
/// Time set to mTime2 same
mTime2 = hourOfDay + ":" + "0" + minute;
/// Time set to mTime3 same
mTime3 = hourOfDay + ":" + "0" + minute;
} else {
/// Time set to mTime1
mTime1 = hourOfDay + ":" + minute;
/// Time set to mTime2 same
mTime2 = hourOfDay + ":" + minute;
/// Time set to mTime3 same
mTime3 = hourOfDay + ":" + minute;
}
textViewTime1.setText(mTime1);
textViewTime2.setText(mTime2);
textViewTime3.setText(mTime3);
}
// 从时间选择器获取时间
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
因为每次都在一个方法中设置所有三个时间并在文本视图中设置。
仔细核对,重新编码。
if (minute < 10) {
mTime1 = hourOfDay + ":" + "0" + minute;
mTime2 = hourOfDay + ":" + "0" + minute;
mTime3 = hourOfDay + ":" + "0" + minute;
} else {
mTime1 = hourOfDay + ":" + minute;
mTime2 = hourOfDay + ":" + minute;
mTime3 = hourOfDay + ":" + minute;
}
textViewTime1.setText(mTime1);
textViewTime2.setText(mTime2);
textViewTime3.setText(mTime3);
}
您可能错过了回调的目标对象,因此您覆盖了所有文本视图。你应该使用类似这样的东西:
if(view belongs to textViewTime1)
textViewTime1.setText(mTime1);
if(view belongs to textViewTime2)
textViewTime2.setText(mTime2);
if(view belongs to textViewTime3)
textViewTime3.setText(mTime3);
如果不了解 view
实际是什么以及它是如何连接的,我无法帮助您解决 if 条件。
我快速回顾了 ReminderAddActivity
and TimePickerDialog
,您需要将 TimePickerDialog
应用于每个独立的文本视图。最后多次使用该控件,而不是将其一起破解。如果不重写您正在使用的库,它不会以这种方式工作。
我正在开发一个模块,我必须允许用户在不同的文本视图中设置 3 个不同的时间,因为我正在使用 TimePicker。
但是每当我 select 在 TimePicker 中计时时,它会在其他两个 TextView 中显示相同的时间。
那么可能是什么原因呢?
private String textViewTime1, textViewTime2, textViewTime3;
private String mTime1, mTime2, mTime3;
// On clicking Time picker
public void setTime(View v){
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
false
);
tpd.setThemeDark(false);
tpd.show(getFragmentManager(), "Timepickerdialog");
}
// Obtain time from time picker
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
if (minute < 10) {
mTime1 = hourOfDay + ":" + "0" + minute;
mTime2 = hourOfDay + ":" + "0" + minute;
mTime3 = hourOfDay + ":" + "0" + minute;
} else {
mTime1 = hourOfDay + ":" + minute;
mTime2 = hourOfDay + ":" + minute;
mTime3 = hourOfDay + ":" + minute;
}
textViewTime1.setText(mTime1);
textViewTime2.setText(mTime2);
textViewTime3.setText(mTime3);
}
But whenever I select time in TimePicker it showing same time in other two TextViews.
因为,你设置的时间是一样的!
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
if (minute < 10) {
/// Time set to mTime1
mTime1 = hourOfDay + ":" + "0" + minute;
/// Time set to mTime2 same
mTime2 = hourOfDay + ":" + "0" + minute;
/// Time set to mTime3 same
mTime3 = hourOfDay + ":" + "0" + minute;
} else {
/// Time set to mTime1
mTime1 = hourOfDay + ":" + minute;
/// Time set to mTime2 same
mTime2 = hourOfDay + ":" + minute;
/// Time set to mTime3 same
mTime3 = hourOfDay + ":" + minute;
}
textViewTime1.setText(mTime1);
textViewTime2.setText(mTime2);
textViewTime3.setText(mTime3);
}
// 从时间选择器获取时间
@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
因为每次都在一个方法中设置所有三个时间并在文本视图中设置。 仔细核对,重新编码。
if (minute < 10) {
mTime1 = hourOfDay + ":" + "0" + minute;
mTime2 = hourOfDay + ":" + "0" + minute;
mTime3 = hourOfDay + ":" + "0" + minute;
} else {
mTime1 = hourOfDay + ":" + minute;
mTime2 = hourOfDay + ":" + minute;
mTime3 = hourOfDay + ":" + minute;
}
textViewTime1.setText(mTime1);
textViewTime2.setText(mTime2);
textViewTime3.setText(mTime3);
}
您可能错过了回调的目标对象,因此您覆盖了所有文本视图。你应该使用类似这样的东西:
if(view belongs to textViewTime1)
textViewTime1.setText(mTime1);
if(view belongs to textViewTime2)
textViewTime2.setText(mTime2);
if(view belongs to textViewTime3)
textViewTime3.setText(mTime3);
如果不了解 view
实际是什么以及它是如何连接的,我无法帮助您解决 if 条件。
我快速回顾了 ReminderAddActivity
and TimePickerDialog
,您需要将 TimePickerDialog
应用于每个独立的文本视图。最后多次使用该控件,而不是将其一起破解。如果不重写您正在使用的库,它不会以这种方式工作。