Я знаю, что многие люди назвали бы это повторяющимся вопросом, но я предлагаю им сначала прочитать его.
У меня есть виджет timePicker в XML, и я установил для него OnTimeChangedListener. Я получаю пользовательский ввод (часы и минуты, которые я выбираю) и сохраняю их с помощью sharedPreferences, который работает нормально, но timePicker всегда показывает AM, даже если я выбираю PM. Итак, я должен знать, как узнать, какой пользователь выбрал AM или PM, и сохранить его, как я сэкономил час и минуту?
XML виджета timePicker:
<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, и он работал нормально, но мне не нравился внешний вид моего виджета выбора времени, поэтому я этого не хочу.