我有一个ViewPager
与一些片段,其中用户输入不同的输入。其中一个片段包含我存储的DatePicker
和TimePicker
(当用户选择日期和时间时)作为Joda LocalDate
和LocalTime
。SavedInstanceState不为空,但为空
我想保存日期和时间为了保持输入,即使用户在片段之间滑动。这里是我的代码:
@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为空,当重新创建片段时,bundle与null不同(当然键值对不存在)。
你能给我一个如何解决这个问题的方法吗?我希望对此行为有任何解释。
以这样的方式将这些行不应该运行,如果它为空或包含在尝试捕捉包括条件块 –