我有ViewPager
一些片段,用户在其中输入不同的输入。其中一个片段包含 aDatePicker
和 aTimePicker
我存储(当用户选择日期和时间时)作为 JodaLocalDate
和LocalTime
.
即使用户在片段之间滑动,我也想保存日期和时间以保持输入。这是我的代码:
@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 为 null 时尝试避免保存数据,当重新创建片段时,bundle 与 null 不同(当然键值对不存在)。
你能给我一个解决这个问题的方法吗?我将不胜感激对这种行为的任何解释。