11

I'am using Fragment which is an instance of Fragment and not of DialogFragment.

I did google most of the search result shows how to use DialogFragment to have DatePicker.

which isn't working in my case because of type mismatch of Fragment and DialogFragment

Any example or idea would be helpful

Here is the Fragment Java Code

 public class CreateReportFragment extends Fragment { public CreateReportFragment(){} public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { rootView = inflater.inflate(R.layout.activity_create_report, container, false); initViews(); return rootView; } private void initViews() { final Calendar c = Calendar.getInstance(); year = c.get(Calendar.YEAR); month = c.get(Calendar.MONTH); day = c.get(Calendar.DAY_OF_MONTH); editTextDate.setText(new StringBuilder() // Month is 0 based, just add 1 .append(year) .append("-") .append(month + 1) .append("-").append(day)); buttonDate = (Button)rootView.findViewById(R.id.buttonDate); } 

How to implement DatePicker in Fragment?

3 Answers 3

33

Use a DialogFragment

If i am guessing right you want to show a DatePicker on click of buttonDate

http://developer.android.com/guide/topics/ui/controls/pickers.html

On Button click

DialogFragment picker = new DatePickerFragment(); picker.show(getFragmentManager(), "datePicker"); 

DatePickerFragment.java

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @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); // Create a new instance of DatePickerDialog and return it return new DatePickerDialog(getActivity(), this, year, month, day); } @Override public void onDateSet(DatePicker view, int year, int month, int day) { Calendar c = Calendar.getInstance(); c.set(year, month, day); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = sdf.format(c.getTime()); } } 
Sign up to request clarification or add additional context in comments.

14 Comments

where did listener = (TheListener) getActivity(); come from?
@AndroidNewbie remove it it was a copy paste from one of my codes and i forgot to remove it
@AndroidNewbie you could use a interface as a callback to the activity and then communicate date to fragment. developer.android.com/training/basics/fragments/…
Sir. Please? Im stuck here again.
|
5

How to implement DatePicker in Fragment?

The same way you would "implement" a TextView in a Fragment: have onCreateView() return a View that is or contains a DatePicker. For example, you might have a layout file that contains a DatePicker widget, and have onCreateView() inflate that layout.

2 Comments

but what i would like to happen is that when i click a button the datepicker will show.
@AndroidNewbie: And this is exactly what Mark said.
3

. . . which isn't working in my case because of type mismatch of Fragment and DialogFragment

A DialogFragment IS-A Fragment because it extends Fragment.Therefore, you can use a DialogFragment anywhere you would a Fragment.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.