My code in fragment :
public class DatepickerFragment extends Fragment {
TextView etDate;
static final int DATE_ID = 0;
Calendar C = Calendar.getInstance();
private int mYearIni, mMonthIni, mDayIni, sYearIni, sMonthIni, sDayIni;
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
mYearIni = year;
mMonthIni = month;
mDayIni = dayOfMonth;
etDate.setText(mDayIni + "-" + (mMonthIni + 1) + "-" + mYearIni + " ");
}
};
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_ID:
return new DatePickerDialog(getContext(), mDateSetListener, sYearIni, sMonthIni, sDayIni);
}
return null;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_datepicker, container, false);
etDate= rootView.findViewById(R.id.etDate);
sMonthIni = C.get(Calendar.MONTH);
sDayIni = C.get(Calendar.DAY_OF_MONTH);
sYearIni = C.get(Calendar.YEAR);
etDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getActivity().showDialog(DATE_ID);
}
});
return rootView;
}
I am trying this code for activity and then is success, but I try in Fragment datepicker didn't show. My fragment is in the slider viewpager, and I try with fragment dialog and the viewpager adapter is error.
How to show DatePicker in Fragment?
make your fragment implement to DatePickerDialog.OnDateSetListener
create a calender instance for current date
create DatePicker dialog and show
public class YourFragment extends Fragment implements android.app.DatePickerDialog.OnDateSetListener {
/**
* Create new fragment.
*/
public static YourFragment ofNew() {
YourFragment fragment = new YourFragment();
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.layout_fragment, container, false);
Button button = rootView.findViewById(R.id.show);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showAndroidPicker();
}
;
});
return rootView;
}
private void showAndroidPicker() {
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);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
this, year, month, day);
datePickerDialog.show();
}
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
}
}