0

次のコードがあります。

public void startDatePickerDialog(View v) {
    DatePickerFragment newFragment = new DatePickerFragment();
    newFragment.setType("start");
    newFragment.show(getSupportFragmentManager(), "startDatePicker");
}

DatePickerFragment を使用

    private String type = "none";

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the current date as the default date in the picker
    final Calendar c = Calendar.getInstance();
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day = c.get(Calendar.DAY_OF_MONTH);

    // Create a new instance of DatePickerDialog and return it
    return new DatePickerDialog(getActivity(), this, year, month, day);
}

@Override
public void onCancel(DialogInterface dialog) {
    Toast.makeText(getActivity(), "works?", Toast.LENGTH_LONG).show();
    if (type.equals("start")) {
        EditText e = (EditText) getActivity().findViewById(
                R.id.date_of_task);
        e.setText("");
    } else {
        EditText e = (EditText) getActivity().findViewById(
                R.id.deadlineDate);
        e.setText("");
    }
    super.onCancel(dialog);
}

public void setType(String t) {
    type = t;
}

@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
    if (type.equals("start")) {
        EditText e = (EditText) getActivity().findViewById(
                R.id.date_of_task);
        e.setText("" + day + "." + (month + 1) + "." + year);
    } else {
        EditText e = (EditText) getActivity().findViewById(
                R.id.deadlineDate);
        e.setText("" + day + "." + (month + 1) + "." + year);
    }
}

私の問題は、onCancel が機能しないことです。したがって、onCreateでアクションを引き起こすDialogFragmentにボタンを追加したいと思います。ボタンを追加するにはどうすればよいですか、またはこの問題を解決するにはどうすればよいですか。

4

2 に答える 2

0

日付/時刻ピッカー ダイアログにバグがあります。それは次のようなものです:

now : [OK] をクリックします - 日付が 2 回設定されます [キャンセル] をクリックします - 日付がクリアされてから設定されます [戻る] をクリックします - 日付が 1 回設定されます

予想: [OK] をクリックします - 日付が一度設定されます [キャンセル] をクリックします - 日付がリセットされます [戻る] をクリックします - ntng で、元の状態を保持します

回避策として、最初に OnDateSetListener を呼び出したときに設定されるカウンターを保持し、カウンターが > 1 の場合は、カウンターを返してリセットすることができます。

于 2013-02-03T14:40:11.667 に答える
0

わかりました、DatePickerDialog のメソッド「setButton2」を設定することで問題を解決しました。OnclickListener を生成し、自分のコードを onClick メソッドに入れたところ、動作しました

于 2013-02-02T16:16:14.837 に答える