0

It is my XML file named create_event.xml

<!--  Start Date  -->
          <LinearLayout
            style="@style/create_event_exc_margin_bottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                style="@style/create_event_exc_infotext_bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/start_date" />
            </LinearLayout>

             <LinearLayout
                 style="@style/create_event_exc_margin_bottom"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal" >
                <EditText 
                    style="@style/create_event_infotext_normal"
                    android:textColor="@android:color/black"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content" 
                     android:layout_weight="1"
                     android:background="@drawable/extra_desc"
                     android:id="@+id/start_date">
                </EditText>

                <Button 
                    android:layout_height="wrap_content"
                    android:layout_weight="0" 
                    android:id="@+id/btn_start_calender"
                    android:text="Calendar"
                    android:layout_width="100dp">
                </Button> 

             </LinearLayout>

        <!--  Start Time  -->      
               <LinearLayout
            style="@style/create_event_exc_margin_bottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                style="@style/create_event_exc_infotext_bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/start_time" />
            </LinearLayout>

             <LinearLayout
                 style="@style/create_event_exc_margin_bottom"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal" >

                 <EditText 
                     style="@style/create_event_infotext_normal"
                    android:textColor="@android:color/black"
                     android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:layout_weight="1"
                android:background="@drawable/extra_desc"
            android:id="@+id/start_time">

        </EditText>

    <Button 
        android:layout_height="wrap_content"
        android:layout_weight="0" 
        android:id="@+id/btn_start_timepicker"
        android:text="Time Picker" 
        android:layout_width="100dp"></Button>

                 </LinearLayout>

              <!--  End Date  --> 
               <LinearLayout
            style="@style/create_event_exc_margin_bottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                style="@style/create_event_exc_infotext_bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/end_date" />
            </LinearLayout>

             <LinearLayout
                 style="@style/create_event_exc_margin_bottom"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal" >

                 <EditText 
                     style="@style/create_event_infotext_normal"
                    android:textColor="@android:color/black"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content" 
                     android:layout_weight="1"
                     android:background="@drawable/extra_desc"
                     android:id="@+id/end_date">
                </EditText>
                <Button 
                    android:layout_height="wrap_content"
                    android:layout_weight="0" 
                    android:id="@+id/btn_end_calender" 
                    android:text="Calendar"
                    android:layout_width="100dp">
                </Button> 
             </LinearLayout>

              <!--  End Time  --> 
                <LinearLayout
            style="@style/create_event_exc_margin_bottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                style="@style/create_event_exc_infotext_bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/end_time" />
            </LinearLayout>

             <LinearLayout
                 style="@style/create_event_exc_margin_bottom"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:orientation="horizontal" >

                 <EditText 
                     style="@style/create_event_infotext_normal"
                    android:textColor="@android:color/black"
                     android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:layout_weight="1"
                android:background="@drawable/extra_desc"
            android:id="@+id/end_time">

        </EditText>

    <Button 
        android:layout_height="wrap_content"
        android:layout_weight="0" 
        android:id="@+id/btn_end_timepicker"
        android:text="Time Picker" 
        android:layout_width="100dp"></Button>

                 </LinearLayout>

Here, it is my java file...

 public class Create_Event extends SherlockFragment implements OnClickListener {

Button b_start_calender, b_end_calender, b_start_timepicker, b_end_timepicker;
EditText start_date, start_time, end_date, end_time;
private int start_year, start_month, start_day, start_hour, start_minute;
private int end_year, end_month, end_day, end_hour, end_minute;

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

b_start_calender=(Button)rootView.findViewById(R.id.btn_start_calender);
    b_start_timepicker=(Button)rootView.findViewById(R.id.btn_start_timepicker);
    b_end_calender=(Button)rootView.findViewById(R.id.btn_end_calender);
    b_end_timepicker=(Button)rootView.findViewById(R.id.btn_end_timepicker);

    start_date=(EditText)rootView.findViewById(R.id.start_date);
    start_time=(EditText)rootView.findViewById(R.id.start_time);
    end_date=(EditText)rootView.findViewById(R.id.end_date);
    end_time=(EditText)rootView.findViewById(R.id.end_time);

    b_start_calender.setOnClickListener(this);
    b_start_timepicker.setOnClickListener(this);
    b_end_calender.setOnClickListener(this);
    b_end_timepicker.setOnClickListener(this);

return rootView;        
}


@Override
public void onClick(View v) {
    // TODO Auto-generated method stub


if(v==b_start_calender) {
    final Calendar c=Calendar.getInstance();
    start_year=c.get(Calendar.YEAR);
    start_month=c.get(Calendar.MONTH);
    start_day=c.get(Calendar.DAY_OF_MONTH);

    DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year,
                int monthOfYear, int dayOfMonth) {
startDate = Calendar.getInstance();
            startDate.set(Calendar.YEAR, year);
            startDate.set(Calendar.MONTH, monthOfYear);
            startDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
           start_date.setText(dayOfMonth + "-"
                    + (monthOfYear + 1) + "-" + year);
        }
    };
    DatePickerDialog d = new DatePickerDialog(getActivity(),
             mDateSetListener, start_year, start_month, start_day);
    d.show();
}  

if(v==b_start_timepicker) {
    final Calendar c = Calendar.getInstance();
    start_hour=c.get(Calendar.HOUR_OF_DAY);
    start_minute=c.get(Calendar.MINUTE);

    TimePickerDialog.OnTimeSetListener mTimeSetListner = new TimePickerDialog.OnTimeSetListener() {

        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            start_time.setText(hourOfDay + ":" + minute);
        }
    };
    TimePickerDialog t=new TimePickerDialog(getActivity(), mTimeSetListner, start_hour, start_minute,false);
    t.show();
}

if(v==b_end_calender) {
    final Calendar c=Calendar.getInstance();
    end_year=c.get(Calendar.YEAR);
    end_month=c.get(Calendar.MONTH);
    end_day=c.get(Calendar.DAY_OF_MONTH);

    DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener()  {
        public void onDateSet(DatePicker view, int year,
                int monthOfYear, int dayOfMonth)  {
Calendar newEndDate=Calendar.getInstance();
            newEndDate.set(Calendar.YEAR, year);
            newEndDate.set(Calendar.MONTH, monthOfYear);
            newEndDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);



            if(newEndDate.before(startDate))
            {
                end_date.setText("Plz.. enter date after starting date..");

            }

            else
            {

                end_date.setText(dayOfMonth + "-"
                        + (monthOfYear + 1) + "-" + year);

            }


        }
    };
    DatePickerDialog d = new DatePickerDialog(getActivity(),
             mDateSetListener, end_year, end_month, end_day);
    d.show();       
}  


if(v==b_end_timepicker) {
    final Calendar c = Calendar.getInstance();
    end_hour=c.get(Calendar.HOUR_OF_DAY);
    end_minute=c.get(Calendar.MINUTE);

    TimePickerDialog.OnTimeSetListener mTimeSetListner = new TimePickerDialog.OnTimeSetListener()  {

        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            end_time.setText(hourOfDay + ":" + minute);
        }
    };
    TimePickerDialog t=new TimePickerDialog(getActivity(), mTimeSetListner, end_hour, end_minute,false);
    t.show();
}
}

Here, start date and end date can be set properly. End date can not be set before starting date. But, if we set ending date first and then starting date... In this case it is not working properly. How to handle this case??? I also need that starting and ending date can't be same and user can not be able select date before today's date... Where to put condition?? How can I do this?? Please Help...

Mayank Saini
  • 3,017
  • 24
  • 25
user3388240
  • 27
  • 1
  • 7

1 Answers1

0

Since API level 11 there is a method for that: date.before(today) and date.equals(today)

Use DatePicker.setMaxDate(long maxDate) to set max date and DatePicker.setMinDate(long maxDate) to set min date for Datepicker.

In your case diable ending date untill starting date selected.

if(startDate.before(today) || startDate.equals(today)){
   //error !
}

if(startDate.equals(EndDate)){
   //error !
}
kaushik parmar
  • 805
  • 6
  • 19