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 不起作用。因此,我想在 DialogFragment 上添加一个按钮,它会导致 onCreate 中的操作。如何添加按钮或如何解决此问题。

4

2 回答 2

0

好的,我通过设置 DatePickerDialog 的方法“setButton2”解决了我的问题。我生成了一个 OnclickListener 并将我的代码放入 onClick 方法中,它可以工作

于 2013-02-02T16:16:14.837 回答
0

日期/时间选择器对话框存在错误。它是这样的:

现在:单击确定-日期设置两次单击取消-日期清除然后设置单击返回-日期设置一次

预期:单击确定-单击取消后设置日期-重置日期单击返回-ntng并保持原样

作为一种解决方法,您可以保留一个在您第一次调用 OnDateSetListener 时设置的计数器,如果计数器 > 1,则返回并重置计数器。

于 2013-02-03T14:40:11.667 回答