У меня есть довольно простой DialogFragment. Это выглядит примерно так:
import android.support.v4.app.DialogFragment;
public class MyDialogFragment extends DialogFragment {
private String mData = "empty";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(LOG_TAG, "onCreate");
setStyle(DialogFragment.STYLE_NO_TITLE, 0);
// setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.mydialog, container);
....
return view;
}
public setData(String _data) {
mData = _data;
}
}
Я загружаю этот фрагмент вот так из моего FragmentActivity
:
FragmentManager lFM = getSupportFragmentManager();
MyDialogFragment lDialog = new MyDialogFragment();
lDialog.setData("not empty");
lDialog.show(lFM, "MyDialog");
Код, как указано выше, работает нормально. Однако я хотел бы сохранить фрагмент на переключателе ориентации, чтобы сохранить поле mData. Если я добавлю setRetainInstance(true);
(и после некоторой отладки), я увижу, что фрагмент действительно сохраняется при переключении ориентации - onCreate()
на этот раз не вызывается. Я вижу, что вызывается onCreateView()
, и я возвращаю правильный объект View
, но диалоговое окно не отображается на экране. Что мне не хватает?
android:configChanges
, Google не рекомендует это делать! - person   schedule 31.01.2013