如何在DialogFragment中添加选项按钮

时间:2013-02-02 15:00:11

标签: android android-dialogfragment

我有以下代码:

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上添加一个Button,它会导致onCreate中的操作。如何添加按钮或如何解决此问题。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

日期/时间pickerdialog存在错误。它是这样的:

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

预计: 单击确定 - 日期设置一次 单击取消 - 日期重置 点击返回 - ntng并保持状态

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