我创建了正在建设,并从onCreateDialog方法返回AlertDialog的DialogFragment。 在AlertDialog包含两个EditText上的意见。
我设置在onCreateDialog方法,直到我转动电话,所有的变化迷路伟大的工程这两个编辑文本的初始值/恢复到初始值,因为onCreateDialog被调出。
所以我的问题是我应该把初始值,因此它们只设置你第一次打开对话框,如果你已经做了修改和旋转手机,我保留最后状态retached?
下面我粘贴简化我的代码版本。 一种解决方案可以在可以的newInstance初始化类属性()方法,但后来我需要让他们静。 其它解决方案可以通过捆绑来传递值,但是没有放的方法采取日历作为参数类型。
什么是最好的做法?
public class MyDialogFragment extends DialogFragment implements OnClickListener, OnDateSetListener, OnQuantitySetListener
{
private EditText editText1, editText2
private MyObject myObject;
public static MyDialogFragment newInstance()
{
return new MyDialogFragment ();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater factory = LayoutInflater.from(getActivity());
final View v = factory.inflate(R.layout.my_layout, null);
editText1 = (EditText) v.findViewById(R.id.text1);
editText2 = (EditText) v.findViewById(R.id.text2);
myObject = <get the object from database>;
editText1.setText(myObject.attribute1);
editText2.setText(myObject.attribute2);
bindDataToViews();
return new AlertDialog.Builder(getActivity())
.setIconAttribute(R.drawable.add)
.setTitle("Title of the dialog")
.setView(v)).create();
}
... other methods using getting the values from EditText and putting them back to MyObject
}