没有看到你的代码,很难猜出哪里是错误,但你可以试试下面的代码:
public class MainActivity extends ActionBarActivity implements DatePickerDialog.OnDateSetListener {
Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Set your Alert Dialog box code
mContext=this;
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setMessage("This is Alert dialog messgae")
.setTitle("Launch the date Picker")
.setPositiveButton("Date Pick", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Launch a date picker from Here
showDatePickerDialog();
}
})
.setNegativeButton("cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Cancel the Dialog itself
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
public void showDatePickerDialog() {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
private static class DatePickerFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
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(), (OnDateSetListener) getActivity(), year, month, day);
}
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
}
}
如您所见,我在单击警报对话框按钮时使用片段创建日期选择器。
你的Activity需要实现
onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth)
否则应用程序崩溃并显示java.lang.ClassCastException 并带有以下错误消息:
MainActivity$DatePickerFragment cannot be cast to android.app.DatePickerDialog$OnDateSetListener