【发布时间】:2013-12-30 09:39:17
【问题描述】:
取消按钮在我的应用程序中不起作用。当我单击取消按钮时,它会显示时间选择器对话框而不是日期对话框关闭。
DatePickerFragment.java
@SuppressLint("ValidFragment")
public class DatePickerFragment extends DialogFragment implements
DatePickerDialog.OnDateSetListener {
Dialog dialog;
private boolean mIgnoreTimeSet = false;
public EditText activity_edittext;
//OnDismissListener mOnDismissListener;
public DatePickerFragment(EditText edit_text) {
activity_edittext = edit_text;
}
@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);
return new DatePickerDialog(getActivity(),this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int month,
int day) {
Log.d("date",String.valueOf(day) + "/"
+ String.valueOf(month + 1) + "/" + String.valueOf(year));
activity_edittext.setText(String.valueOf(day) + "/"
+ String.valueOf(month + 1) + "/" + String.valueOf(year));
}
public void onDateCancel(DatePicker view, int year, int month,int day) {
dialog.dismiss();
}
}
TimePickerFragment.java
@SuppressLint("ValidFragment")
public class TimePickerFragment extends DialogFragment implements
TimePickerDialog.OnTimeSetListener {
int mhour,mminute;
public EditText activity_edittext;
public TimePickerFragment(EditText edit_text) {
activity_edittext = edit_text;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
mhour = c.get(Calendar.HOUR_OF_DAY);
mminute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(),this, mhour, mminute,false);
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mhour = hourOfDay;
mminute = minute;
Log.d("time",String.valueOf(mhour) + ":"
+ String.valueOf(mminute));
activity_edittext.setText(String.valueOf(mhour) + ":"
+ String.valueOf(mminute)) ;
}
}
TimeFragment.java
public class TimeFragment extends Fragment{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
showTimePickerDialog(new EditText(getActivity()));
}
public void showDatePickerDialog(View v) {
DatePickerFragment newFragment = new DatePickerFragment(new EditText(getActivity()));
newFragment.show(getFragmentManager(), "datePicker");
NowFragment fragment = new NowFragment();
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
}
}
private void showTimePickerDialog(EditText editText) {
TimePickerFragment newFragment = new TimePickerFragment(new EditText(getActivity()));
newFragment.show(getFragmentManager(), "timePicker");
showDatePickerDialog(new EditText(getActivity()));
}
}
【问题讨论】:
-
您是否尝试删除“setCancelable(false);”行?
-
是的,但它仍然无法正常工作
标签: android datepicker datetimepicker timepicker android-dialogfragment