かなり単純な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
オブジェクトを返しますが、ダイアログが画面に表示されません。私は何が欠けていますか?