onCreateDialogメソッドからAlertDialogを構築して返すDialogFragmentを作成しました。AlertDialog には、2 つの EditText ビューが含まれています。
これら 2 つの編集テキストの初期値をonCreateDialogメソッドで設定しています。これは、電話を回転させてonCreateDialogが呼び出されるため、すべての変更が失われるか、初期値に復元されるまでうまく機能します。
だから私の質問は、最初にダイアログを開いたときにのみ設定されるように、初期値をどこに配置する必要があるかということです。
以下に、コードの簡略化されたバージョンを貼り付けました。解決策の 1 つは、newInstance() メソッドでクラス属性を初期化することですが、その後、それらを静的にする必要があります。他の解決策は Bundle を介して値を渡すことですが、パラメータの型として Calendar を取る put-method はありません。
ベストプラクティスとは?
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
}