2014-04-02 159 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

相關問題