我有一个相当简单的 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
对象,但是屏幕上没有显示对话框。我错过了什么?