我有一個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不同(當然鍵值對不存在)。
你能給我一個如何解決這個問題的方法嗎?我希望對此行爲有任何解釋。
以這樣的方式將這些行不應該運行,如果它爲空或包含在嘗試捕捉包括條件塊 –