2014-04-02 54 views
0

这是create_event.xml命名我的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> 

在这里,这是我的java文件

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(); 
} 
} 

这里,开始日期和结束日期正确设置。结束日期不能在开始日期之前设置。但是,如果我们先设置结束日期,然后再开始日期...在这种情况下,它不能正常工作。如何处理这种情况?我也需要那个开始和结束日期不能相同,并且用户不能在今天的日期之前选择日期...在哪里放条件?我怎样才能做到这一点??请帮助...

回答

0

我会将您的结束日期监听器更改为以下内容。

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)) { 
        // handle the error 
       } else { 
       end_date.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); 
       } 

      } 
    }; 

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

}

如果你注意到,我使用了一个全局变量startDate。选中时,您将需要将其全局存储。其次,查看DateFormatter类,我相信它们对你来说是有用的。

干杯。

+0

您也可以使用endDate全局变量,因为您可能想要防止startDate在endDate之后。 – tambykojak

+0

是的,它工作....非常感谢您分享您的知识....其实我没有宣布startDate作为全局变量...这就是为什么它不工作... – user3388240

相关问题