I am using the following method to pop up the dialog to pick the date.
private DatePickerDialog.OnDateSetListener mDateSetListener =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
dobYear = year;
dobMonth = monthOfYear;
dobDay = dayOfMonth;
if(isEighteenYearOld()){
//display the current date
dateDisplay();
} else{
Toast.makeText(mContext, "You must be 18 year old", Toast.LENGTH_SHORT).show();
}
}
};
I know that onDateSet we can get the selected date. But what i am trying is if the date selected is younger than 18 years i need to alert the user. I have tried above code but it close the dialog and gone back to the activity.
I want to stay in the dialog until user selects the date which is 18 years old.I am not sure how to get the onclick event in the dialog?
Date Picker Dialog you are using is deprecated so I recommend you to don't use that.
You can implement the Date picker in two ways(that I know of)
Using DialogFragment:
public class MainActivity extends FragmentActivity {
EditText text;
Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b=(Button)findViewById(R.id.button1);
text=(EditText)findViewById(R.id.editText1);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
DateDialogFragment datepicker=new DateDialogFragment();
datepicker.show(getSupportFragmentManager(), "showDate");
}
});
}
public class DateDialogFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{
public DateDialogFragment()
{
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar cal=Calendar.getInstance();
int year=cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH);
int day=cal.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
showSetDate(year,monthOfYear,dayOfMonth);
}
}
public void showSetDate(int year,int month,int day) {
text.setText(year+"/+"+month+"/"+day);
}
}
Check this sample and implement the same in your Activity.
Using Alert Dialog:
Using the second one is pretty simple
Create layout in your res/layout folder and place DatePicker in the layout
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = (View) inflater.inflate(R.layout.yourlayout, null);
DatePicker picker=(DatePicker)view.findViewById(R.id.datepicker);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(view).
builder.setMessage(R.string.dialog_fire_missiles)
.setPositiveButton(R.string.fire, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// FIRE ZE MISSILES!
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Create the AlertDialog object and return it
return builder.create();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With