我有一个AlertDialog
,它包括一个启动DatePicker
的按钮。有可能在一个对话中完成这项工作吗?如果有,我该怎么做?
我搜索了谷歌和SO上的几篇帖子,但无法找到在Alert Dialog
中完成DatePicker
的信息。
在没有看到代码的情况下,很难猜测哪里有错误,但您可以尝试以下代码:
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
}
}
正如你所看到的,我正在创建一个日期选择器使用片段点击警报对话框按钮。
您的活动需要实施
onDateSet(DatePicker视图,int year,int monthOfYear,int dayOfMonth)
否则,应用程序崩溃,出现java.lang.ClassCastException
,并显示以下错误消息:
MainActivity$DatePickerFragment cannot be cast to android.app.DatePickerDialog$OnDateSetListener
AlertDialog仅用于警报消息。使用对话框,您可以设置自己的内容视图。