java - 如何在 2 个不同的 EditText 中设置 1 个时间选择器?
问题描述
我有 2 个编辑文本字段,一个用于开始时间,一个用于结束时间。我为两个编辑文本字段的时间选择器编写了一个 java 函数。
问题是当我尝试在结束时间编辑文本字段中设置时间时,它会将时间设置为开始时间编辑文本字段。
这是我的 xml 代码:
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/starting_time_et"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="305dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:hint="Click To Add Starting Time Of Course"
android:textStyle="bold">
</androidx.appcompat.widget.AppCompatEditText>
<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/ending_time_et"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginTop="355dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:hint="Click To Add Ending Time Of Course"
android:textStyle="bold">
这是我的时间选择器 Java 代码:
Button backButton;
EditText startingTime;
EditText endingTime;
TimePickerDialog timePickerDialog;
Calendar calender;
int currentHour;
int currentMinute;
String amPm;
String minuteWith_0_OnLeft;
startingTime = findViewById(R.id.starting_time_et);
startingTime.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
startingTimeAndEndingTime();
timePickerDialog.show();
}
});
endingTime = findViewById(R.id.ending_time_et);
endingTime.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
startingTimeAndEndingTime();
timePickerDialog.show();
}
});
public void startingTimeAndEndingTime(){
calender = Calendar.getInstance();
currentHour = calender.get(Calendar.HOUR_OF_DAY);
currentMinute = calender.get(Calendar.MINUTE);
timePickerDialog = new TimePickerDialog(AddCourses.this, new
TimePickerDialog.OnTimeSetListener(){
@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute){
if(hourOfDay > 12)
{
hourOfDay -= 12;
amPm = "Pm";
}
else if(hourOfDay == 0)
{
hourOfDay += 12;
amPm = "Am";
}
else if(hourOfDay == 12)
{
amPm = "Pm";
}
else
{
amPm = "AM";
}
if( minute < 10 )
{
minuteWith_0_OnLeft = "0" + minute;
}
else
{
minuteWith_0_OnLeft = String.valueOf(minute);
}
startingTime.setText(MessageFormat.format("{0}:{1}{2}", hourOfDay, minuteWith_0_OnLeft, amPm));
}
}, currentHour, currentMinute, false);
}
解决方案
代码按预期工作。您正在函数中设置startingTime
EditText的文本startingTimeAndEndingTime()
并从两者调用它startingTime
并endingTime
单击侦听器。要解决此问题,您可以像这样修改您的startingTimeAndEndingTime()
功能。
public void startingTimeAndEndingTime(boolean isStart) {
calender = Calendar.getInstance();
currentHour = calender.get(Calendar.HOUR_OF_DAY);
currentMinute = calender.get(Calendar.MINUTE);
timePickerDialog = new TimePickerDialog(AddCourses.this, new TimePickerDialog.OnTimeSetListener()
{
@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute)
{
if(hourOfDay > 12)
{
hourOfDay -= 12;
amPm = "Pm";
}
else if(hourOfDay == 0)
{
hourOfDay += 12;
amPm = "Am";
}
else if(hourOfDay == 12)
{
amPm = "Pm";
}
else
{
amPm = "AM";
}
if( minute < 10 )
{
minuteWith_0_OnLeft = "0" + minute;
}
else
{
minuteWith_0_OnLeft = String.valueOf(minute);
}
if (isStart) {
startingTime.setText(MessageFormat.format("{0}:{1}{2}", hourOfDay, minuteWith_0_OnLeft, amPm));
} else {
endingTime.setText(MessageFormat.format("{0}:{1}{2}", hourOfDay, minuteWith_0_OnLeft, amPm));
}
}
}, currentHour, currentMinute, false);
}
推荐阅读
- css - 创建 css 符号链接
- css - Chrome Dev Tools如何查看:伪元素的悬停状态css
- sockets - 为什么python套接字bannergraber返回错误?
- google-sheets - 当用户使用不同的语言时,工作表的名称会发生变化
- c# - 将自定义附加属性与基类和泛型一起使用
- gtrendsr - gtrendsr 无法随时间分析区域(状态)
- wordpress - 我想对特定 URL 集的 robots.txt 文件应用禁止指令
- material-ui - 在深色/浅色样式覆盖之间切换
- sql - 在 Nodejs Expess 应用程序中将会话数据插入 postgres 数据库
- css - react-bootstrap 上的 .flex-grow-1
不填充垂直空间