У меня есть ViewPager
с некоторыми фрагментами, где пользователь вводит разные входы. Один из этих фрагментов содержит DatePicker
и TimePicker
, которые я храню (когда пользователь выбрал дату и время) в качестве Joda LocalDate
и LocalTime
.SavedInstanceState не имеет значения null, но пусто
Я хочу сохранить дату и время, чтобы сохранить этот вход, даже пользователь щелкает между фрагментами. Вот мой код:
@Override
public void onSaveInstanceState(Bundle outState) {
if (selectedDate != null && selectedTime != null) {
outState.putString("date", selectedDate.toString());
outState.putString("time", selectedTime.toString());
super.onSaveInstanceState(outState);
}
}
И в моем onCreateView
:
if (savedInstanceState != null){
Log.d("mylog", savedInstanceState.getString("date");
currentDate = LocalDate.parse(savedInstanceState.getString("date"));
currentTime = LocalTime.parse(savedInstanceState.getString("time"));
selectedDateTv.setText(currentDate.toString("dd/MM/yyyy"));
selectedTimeTv.setText(currentTime.toString("HH:mm"));
} else {
//My code
}
Проблема я столкнулся в том, если пользователь добраться до этого фрагмента, но не входит любой вход, а затем проведите пальцем назад к предыдущим фрагментам и дальше к выбору даты и времени фрагмента, приложение падает на моей линии Log
по адресу onCreateView
.
Я не понимаю, почему, если я пытаюсь избежать сохранения данных, если мои selectedDate и selectedTime равны нулю, когда фрагмент воссоздан, пакет отличается от нуля (и, конечно, пары ключ-значение не существуют).
Можете ли вы дать мне подход к тому, как это решить? Буду признателен за любое объяснение этого поведения.
Include состояние таким образом, что линии не должны работать, если она равна нулю или включить его в попытке поймать блок –