2015-11-18 57 views
0

嘿傢伙我需要datepicker對話框的幫助,因爲我將它的值保存到onDateSet中的變量中:「selectedYear」,「selectedMonth」,「selectedDay」 這些是聲明的變量作爲班上的私人。我的問題是格式化日期格式化日期函數後,變量的值回到空,這就是爲什麼我創建了一個新的函數,我可以保存它們,我知道這是一個混亂的舉動,我想知道爲什麼變量變空了,這個代碼有什麼更好的解決方法。在先進的感謝datepicker對話框的值變空

datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       Calendar newDate = Calendar.getInstance(); 
       newDate.set(year, monthOfYear, dayOfMonth); 

       selectedYear = year; 
       selectedMonth = monthOfYear; 
       selectedDay = dayOfMonth; 
       setDateEdit.setText(formatDate(selectedYear, selectedMonth, selectedDay)); 
      } 
     }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)); 


private String formatDate(int year, int month, int day) { 
     saveDateToVar(year,month,day); 
     Calendar cal = Calendar.getInstance(); 
     cal.setTimeInMillis(0); 
     cal.set(year, month, day); 
     Date date = cal.getTime(); 
     SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy"); 
     return sdf.format(date); 
    } 



    private void saveDateToVar(int year, int month, int day){ 
     savedYear = year; 
     savedDay = day; 
     savedMonth = month; 
    } 
+0

您可以使用http://stackoverflow.com/questions/32960426/datepicker-dialog-box-does-not-open-on-click/32961832#32961832查看日期和時間的piker對話框。 – Sam

回答

0

使用此代碼並根據您的需要進行修改。這將幫助你打開日期選擇器來選擇日期。

public class DateDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 
     return new DatePickerDialog(getActivity(), this, year, month, day); 
    } 

    public void onDateSet(DatePicker view, int year, int month, int day) { 
     month = month + 1; 
     textView.setText(year + "-" + month + "-" + day); 
    } 
} 

您可以分別使用代碼設置日期,月份或年份。 您必須以這種方式調用該方法。

btn_showDate.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      DialogFragment newFragment = new DateDialog(); 
      newFragment.show(getActivity().getSupportFragmentManager(), "datePicker"); 

     } 
    }); 

當你點擊「確定」顯示的日期自動設置在textView上。

快樂的代碼和樂於助人。 :)

+0

在我的代碼我要去使用「selectedYear」,「selectedMonth」,「selectedDay」爲其他目的,這就是爲什麼我需要使用其他功能。不管怎麼說,還是要謝謝你。 –