Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implementing DatePicker in Fragment

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?

like image 236
AndroidNewbie Avatar asked Jan 04 '14 16:01

AndroidNewbie


3 Answers

. . . 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.

like image 55
Ojonugwa Jude Ochalifu Avatar answered Oct 12 '22 09:10

Ojonugwa Jude Ochalifu


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());    
}
}
like image 43
Raghunandan Avatar answered Oct 12 '22 09:10

Raghunandan


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.

like image 26
CommonsWare Avatar answered Oct 12 '22 08:10

CommonsWare