我有以下代码:
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中的操作。如何添加按钮或如何解决此问题。
答案 0 :(得分:0)
好的,我已经通过设置DatePickerDialog的方法“setButton2”解决了我的问题。我生成了一个OnclickListener并将我的代码放入onClick方法,它可以正常工作
答案 1 :(得分:0)
日期/时间pickerdialog存在错误。它是这样的:
现在: 单击确定 - 日期设置两次 单击取消 - 清除日期然后设置 点击返回 - 日期设置一次
预计: 单击确定 - 日期设置一次 单击取消 - 日期重置 点击返回 - ntng并保持状态
作为解决方法,您可以保留一个计数器,该计数器将在您第一次调用OnDateSetListener时设置,如果计数器是> 1然后返回并重置计数器。