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