2013-09-25 36 views
20

Tôi muốn hiển thị cửa sổ bật lên datepicker. Tôi đã tìm thấy một số ví dụ nhưng tôi không nhận được nó đúng cách. Tôi có một nút và tôi muốn rằng khi tôi bấm vào nút hộp thoại datepicker nên bật lên và sau khi thiết lập ngày, ngày nên được lưu trữ trong một biến. Vui lòng cung cấp cho tôi mã mẫu hoặc liên kết tốt.Datepicker: Cách bật datepicker khi nhấp vào nút và giá trị lưu trữ trong biến

+1

http://stackoverflow.com/questions/18672094/android-sdk-datepickerfragment-and-textview/18672134#18672134. kiểm tra này – Raghunandan

+0

Có thể trùng lặp của [this] (http://stackoverflow.com/q/14933330/1952459). Tôi khuyên bạn nên tìm kiếm đầu tiên trên Google hoặc tại đây trên StackOverflow cho các vấn đề của bạn và sau đó đăng câu hỏi. –

+0

http://www.mkyong.com/android/android-date-picker-example/ kiểm tra điều này –

Trả lời

13

Make lớp này là lớp bên trong hoạt động của bạn

nếu bạn muốn thiết lập ngày hiện tại là ngày bạn nhìn thấy khi bạn mở datepicker của bạn. Bạn có thể lấy nó thích này

Calendar c = Calendar.getInstance(); 
int startYear = c.get(Calendar.YEAR); 
int startMonth = c.get(Calendar.MONTH); 
int startDay = c.get(Calendar.DAY_OF_MONTH); 

class StartDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener{ 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     // Use the current date as the default date in the picker 
     DatePickerDialog dialog = new DatePickerDialog(BookingFormActivity.this, this, startYear, startMonth, startDay); 
return dialog; 

    } 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     // TODO Auto-generated method stub 
     // Do something with the date chosen by the user 
     startYear = year; 
     startMonth = monthOfYear; 
     startDay = dayOfMonth; 
     updateStartDateDisplay(); 


    } 
    } 

bạn có thể gọi hộp thoại này bằng cách thiết lập phương pháp này để onClick

public void showStartDateDialog(View v){ 
    DialogFragment dialogFragment = new StartDatePicker(); 
    dialogFragment.show(getFragmentManager(), "start_date_picker"); 
    } 
+0

'updateStartDateDisplay' được triển khai ở đâu? Làm thế nào để 'StartDatePicker' biết về phương pháp này? – MOnsDaR

36

Hãy thử điều này.

Sử dụng mã này khi nhấp vào nút của bạn. Hộp thoại bộ chọn ngày sẽ được hiển thị.

  Calendar c = Calendar.getInstance(); 
    int mYear = c.get(Calendar.YEAR); 
    int mMonth = c.get(Calendar.MONTH); 
    int mDay = c.get(Calendar.DAY_OF_MONTH); 
    System.out.println("the selected " + mDay); 
    DatePickerDialog dialog = new DatePickerDialog(Registration.this, 
      new mDateSetListener(), mYear, mMonth, mDay); 
    dialog.show(); 

Sau đó, cần phải viết mDateSetListener lớp.

class mDateSetListener implements DatePickerDialog.OnDateSetListener { 

     @Override 
     public void onDateSet(DatePicker view, int year, int monthOfYear, 
       int dayOfMonth) { 
      // TODO Auto-generated method stub 
      // getCalender(); 
      int mYear = year; 
      int mMonth = monthOfYear; 
      int mDay = dayOfMonth; 
      v.setText(new StringBuilder() 
        // Month is 0 based so add 1 
        .append(mMonth + 1).append("/").append(mDay).append("/") 
        .append(mYear).append(" ")); 
      System.out.println(v.getText().toString()); 


     } 
    } 

Vui lòng kiểm tra câu trả lời này và bỏ phiếu.

+0

Làm cách nào để nhập 'Registration.this'? – Abbe

+1

@Abbe 'Registration.this' chỉ là tham chiếu đến thể hiện của hoạt động có tên là' Đăng ký' vì 'DatePickerDialog' cần một' Context' và mọi 'Activity' là một' Context'. Bạn sử dụng 'ActivityName.this' thay vì chỉ' this' khi bạn ở trong một phạm vi khác, như trong một trình nghe sự kiện. –

Các vấn đề liên quan