【发布时间】:2016-11-22 17:45:42
【问题描述】:
我有以下AppCompatSpinner 的条目:
<string-array name="startTimeList">
<item>Now</item>
<item>Pick a time..</item>
</string-array>
选择Pick a time..后,会打开TimePickerDialog,允许用户选择时间。方法如下:
startTimeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
// startTimeString = adapterView.getItemAtPosition(i).toString();
DateFormat currentDateFormat = new SimpleDateFormat("HH:mm:ss");
userAvailableTimeInSF = currentDateFormat.format(new Date());
final TextView startTimeSpinnerTV = (TextView) adapterView.getSelectedView();
startTimeSpinnerTV.setText(userAvailableTimeInSF);
switch (i) {
case 0:
userAvailableTimeInSF = currentDateFormat.format(new Date());
startTimeSpinnerTV.setText("Now");
break;
default:
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
TimePickerDialog timePickerDialog = new TimePickerDialog(PostSportRequest.this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
Calendar date = Calendar.getInstance();
date.set(Calendar.HOUR_OF_DAY, hourOfDay);
date.set(Calendar.MINUTE, minute);
date.set(Calendar.AM_PM, date.get(Calendar.AM_PM));
showTime(hourOfDay, minute);
userAvailableTimeInSF = new SimpleDateFormat("HH:mm:ss").format(date.getTime());
startTimeSpinnerTV.setText(userAvailableTimeAMPM);
Toast.makeText(getBaseContext(), "userAvailableTimeInSF: " + userAvailableTimeInSF, Toast.LENGTH_SHORT).show();
}
}, mHour, mMinute, false);
timePickerDialog.show();
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
第一次选择Pick a time..时,TimePickerDialog成功打开并显示选择的时间,但是当我再次选择它或再次点击它时,没有任何反应!
我不知道为什么!
请告诉我如何打开 TimePickerDialog 并选择时间,无论我选择/单击多少次。
【问题讨论】:
-
@SuryaPrakashKushawah 兄弟,我已经尽可能清楚地解释了这个问题。看到这一行:“在选择 Pick a time.. 第一次时,TimePickerDialog 成功打开并显示选择的时间,但是当我再次选择它或再次单击它时,什么也没有发生!”
-
i是什么?您是否在第二次选择时收到 Toast 消息? -
@ρяσѕρєяK
int i是onItemSelected()中的一个参数,是的,我第一次收到Toast消息,但是如果没有先选择case 0,我再次选择case 1,什么也没有发生!正如@MarcinJedynak 在下面的答案中所述,他的方法对我不起作用! -
@HammadNasir:好的,然后将
case 1:更改为default:并检查每次获取对话框,不包括 0 -
@ρяσѕρєяK 它没有帮助!请查看已编辑的问题,并查看下面 Marcin 的答案。他有充分的理由说明为什么会发生这种情况。
标签: java android android-spinner timepicker