我知道很多人会称之为重复问题,但我建议他们先阅读它。
我在XML中有一个timePicker小部件,并且我已经在其上设置了OnTimeChangedListener。我正在获取用户输入(我选择的小时和分钟)并使用sharedPreferences保存它,这工作正常,但即使我选择PM,timePicker也始终显示AM。所以我必须知道如何获得用户选择AM或PM并保存它,就像我节省了小时和分钟一样?
timePicker小部件XML:
<TimePicker
android:id="@+id/time_picker"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
Java代码:
// IMPLEMENTATION OF TIME PICKER'S TIME CHANGE EVENT
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
savedHour = hourOfDay;
savedMinute = minute;
}
});
// IMPLEMENTATION OF SAVE BUTTON
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean isNotification = notificationSwitch.isChecked();
editor.putBoolean("isNotification", isNotification);
editor.putInt("saved_hour", savedHour);
editor.putInt("saved_minute", savedMinute);
editor.putBoolean("hasTimeSaved", true);
editor.apply();
finish();
}
});
// CHECK WHETHER TIME HAS BEEN SAVED BY THE USER OR NOT
if (preferences.getBoolean("hasTimeSaved", false)) {
if (Build.VERSION.SDK_INT >= 23) {
timePicker.setHour(preferences.getInt("saved_hour", 11));
timePicker.setMinute(preferences.getInt("saved_minute", 11));
}else {
timePicker.setCurrentHour(preferences.getInt("saved_hour", 11));
timePicker.setCurrentMinute(preferences.getInt("saved_minute", 11));
}
}
我已经尝试过setIs24Hour为true并且它工作正常但我不喜欢我的时间选择器小部件的外观,所以我不想要那个。
答案 0 :(得分:0)
Android的TimePicker
内部为24小时,所以OnTimeChangedListener
你应该得到0~23。同样,使用12到23之间的值调用setHour()
应该在时间选择器上显示PM。我刚刚在手机上测试了它,一切都按预期工作。