0

I have created one fragment by extending Fragment like below:

public class MyFragement extends Fragment
{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) 
{

View view = inflater.inflate(R.layout.my_fragment_layout, container, false);


return view;

}

My layout has one edittext. When I click on edittext, I want to show datepicker. After selecting date from the datepicker, the selected date should appear in the edit text.

How can I acheive this. Please help me with some example code.

user3021918
  • 195
  • 1
  • 5
  • 11

2 Answers2

3

you can write this code in onCreate of fragment class

 yourEditText.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    //To show current date in the datepicker
                    Calendar mcurrentDate=Calendar.getInstance();
                    mYear=mcurrentDate.get(Calendar.YEAR);
                    mMonth=mcurrentDate.get(Calendar.MONTH);
                    mDay=mcurrentDate.get(Calendar.DAY_OF_MONTH);

                    DatePickerDialog mDatePicker=new DatePickerDialog(**YourActivityName**.this, new OnDateSetListener() {                  
                        public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
                            // TODO Auto-generated method stub                      
                            /*      Your code   to get date and time    */
                        }
                    },mYear, mMonth, mDay);
                    mDatePicker.getDatePicker().setCalendarViewShown(false);
                    mDatePicker.setTitle("Select date");                
                    mDatePicker.show();  }
            });
Shahzeb
  • 3,696
  • 4
  • 28
  • 47
  • This worked. Thank you very much. But in date picker dialog, it is showing both date picker and calender. Please help me how can I shown only date picker not the calender. – user3021918 Jan 08 '14 at 06:19
  • mDatePicker.getDatePicker().setCalendarViewShown(false); add this line below the object declaration of DatePickerDialog. Please mark the answer if it helped you. Thanks – Shahzeb Jan 09 '14 at 07:46
0

Try in the following manner:

Before onCreatView()

  /** Callback received when the user "picks" a departure date in the dialog **/
    private DatePickerDialog.OnDateSetListener pDateSetListener =
            new DatePickerDialog.OnDateSetListener() {

                public void onDateSet(DatePicker view, int year, 
                                      int monthOfYear, int dayOfMonth) {
                    pYear = year;
                    pMonth = monthOfYear;
                    pDay = dayOfMonth;
                    updateDisplay();                   
                }
            };

/** Updates the date in the departure date **/
    private void updateDisplay() {
        dep_date.setText(
            new StringBuilder()
                    // Month is 0 based so add 1
                    .append(padDate(pDay)).append("/")
                    .append(padDate(pMonth + 1)).append("/")                    
                    .append(pYear).append(" "));

    }

Inside onCreateView()

EditText dep_date= (EditText ) view.findViewById(R.id.editText1);

    /** Listener for click event of the departure date edit text **/
        dep_date.setOnTouchListener(new OnTouchListener()
        {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                // TODO Auto-generated method stub
                showDialog(DATE_DIALOG_ID);
                return false;
            }
        });

OutSide onCreateView()

/** Create a new dialog for date picker */
@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:
        return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);

    }
    return null;
}
Satyaki Mukherjee
  • 2,857
  • 1
  • 22
  • 26