ユーザーがViewPager
さまざまな入力を入力するフラグメントがいくつかあります。これらのフラグメントの 1 つに 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 の場合にデータを保存しないようにしようとすると、フラグメントが再作成されるときにバンドルが null とは異なる理由がわかりません (もちろん、キーと値のペアは存在しません)。
これを解決する方法についてのアプローチを教えてもらえますか?この動作の説明をいただければ幸いです。