Не удается сохранить состояние dialogFragment при изменении поворота
Доброе время суток товарищи. Существует фрагмент диалога (отдельный класс), который создается через интерфейс путем щелчка по элементу в listView (щелчок обрабатывается в адаптере и вызывает интерфейс при активации). Данные передаются в этот диалог (для редактирования и сохранения в базе данных). Как я могу сохранить статус диалога при повороте телефона? Точнее, состояние самого диалога я сохраняю здесь вот так:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
if (builder != null) {
savedInstanceState.putBoolean("showDialog", true);
savedInstanceState.putString("id", String.valueOf(id));
savedInstanceState.putString("key", key);
if (!String.valueOf(posTextView.getText()).equals("")) {
savedInstanceState.putDouble("posTextView", Double.parseDouble(String.valueOf(posTextView.getText())));
} else {
savedInstanceState.putDouble("posTextView", 0);
}
if (!String.valueOf(priceTextView.getText()).equals("")) {
savedInstanceState.putDouble("priceTextView", Double.parseDouble(String.valueOf(priceTextView.getText())));
} else {
savedInstanceState.putDouble("priceTextView", 0);
}
savedInstanceState.putLong("dateLong", resultDate);
} else {
savedInstanceState.putBoolean("showDialog", false);
}
}
И восстановить
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
setRetainInstance(true);
if (savedInstanceState != null && savedInstanceState.getBoolean("showDialog")) {
this.id= savedInstanceState.getInt("id");
this.key= savedInstanceState.getString("key");
this.quantity = savedInstanceState.getDouble("posTextView");
this.price = savedInstanceState.getDouble("priceTextView");
this.dateLong = savedInstanceState.getLong("dateLong");
}
Как я могу в Активации после поворота вызвать диалог с этими Восстановленными данными? Не создавайте новый, если старый не был закрыт. Конструктор диалогов (даже после восстановления данных потребуется контекст, иначе nullPointerException)
public EditPortfolioDialogFragment newInstance(Integer id, String key, double quantity, double price, long dateLong,
boolean buy, Context context, PortfolioItemSaveListener portfolioItemSaveListener) {
EditPortfolioDialogFragment dialogFragment = new EditPortfolioDialogFragment();
this.coinId = id;
if (key != null) {
this.key = key;
this.oldKey = key;
} else {
this.key = "abc";
}
this.quantity = quantity;
this.price = price;
this.dateLong = dateLong;
this.context = context;
this.portfolioItemSaveListener = portfolioItemSaveListener;
return dialogFragment;
}