2015-04-23 65 views
0

我利用圖書館從https://github.com/afollestad/material-dialogs 定製的DatePicker我使用該庫,因爲我需要改變顏色等Android的 - 的DatePicker如何保持設置當前日期

而且我的代碼現在看起來像這樣:

public class EditProfileActivity extends ActionBarActivity { 
     private TextView birthdate; 
     private int mYear, mMonth, mDay; 
     private DatePicker datePicker; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_editprofile); 
     birthdate = (Button) findViewById(R.id.birthdateTextView); 
     birthdate.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
       setCustomDate(); 
       } 
     }); 

     /* final Calendar c = Calendar.getInstance(); 
     mYear = c.get(Calendar.YEAR); 
     mMonth = c.get(Calendar.MONTH); 
     mDay = c.get(Calendar.DAY_OF_MONTH); */ 

     } 

     public void setCustomDate() { 

       new MaterialDialog.Builder(this) 
         .title(R.string.pilih_tanggal) 
         .customView(R.layout.datepicker_layout, true) 
         .positiveText(R.string.ok_caps) 
         .callback(new MaterialDialog.ButtonCallback() { 
          @Override 
          public void onPositive(final MaterialDialog dialog) { 
           super.onPositive(dialog); 
           datePicker = (DatePicker) dialog.findViewById(R.id.datePicker1); 
           datePicker.init(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), new DatePicker.OnDateChangedListener() { 
           @Override 
           public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 

           } 
           }); 
         birthdate.setText(new StringBuilder() 
         .append(datePicker.getDayOfMonth()) 
         .append("").append(datePicker.getMonth()) 
         .append("-").append(datePicker.getYear())); 
         } 
         }) 
         .positiveColorRes(R.color.ColorPrimary) 
         .negativeText(R.string.cancel) 
         .negativeColorRes(R.color.ColorPrimary) 
         .show(); 
     } 

所以,我成功地將TextView作爲DatePicker設置的當前日期,但是問題在於當我再次點擊TextView時,日期會返回上次日期(默認)。

enter image description here

以上是當我要去挑選日期。 以下是當我成功地將文本選定日期。

enter image description here

但可悲的是,當我再次點擊的TextView,日期回默認值,而不是我選擇的日期。

enter image description here

可能有人給我一個方向,以解決?我所知道的,到目前爲止是使用

OnDateSetListener

但如何做到這一點與圖書館也?

回答

0

所以,几几天前,我發現這樣的解決方案:

public void setCustomDate() { 
     MaterialDialog dialog = new MaterialDialog.Builder(this) 
       .title(R.string.pilih_tanggal) 
       .customView(R.layout.datepicker_layout, true) 
       .positiveText(R.string.ok_caps) 
       .callback(new MaterialDialog.ButtonCallback() { 
        @Override 
        public void onPositive(final MaterialDialog dialog) { 
         super.onPositive(dialog); 
         birthdate.setText(new StringBuilder() 
           .append(datePicker.getDayOfMonth()).append("/").append(datePicker.getMonth() + 1).append("/").append(datePicker.getYear())); 
        } 
       }) 
       .positiveColorRes(R.color.ColorPrimary) 
       .negativeText(R.string.cancel) 
       .negativeColorRes(R.color.ColorPrimary) 
       .show(); 

     datePicker = (DatePicker) dialog.findViewById(R.id.datePicker1); 
     datePicker.init(mYear, mMonth, mDay, new DatePicker.OnDateChangedListener() { 
      @Override 
      public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
       mYear = year; 
       mMonth = monthOfYear; 
       mDay = dayOfMonth; 
      } 
     }); 
} 

我需要初始化.callback外的日期選擇器,使活動在運行時的日期選擇器將首先認可。 :)

0

我想你將不得不創建另一個單獨的日期選擇器,從你的textview中獲取文本來設置日/月/年?如果這沒有幫助,讓我知道,我可以刪除這個答案。

0
DatePickerDialog datePicker = new DatePickerDialog(getContext(), 
      R.style.DatePicker, datePickerListener, 
      cal.get(Calendar.YEAR), 
      cal.get(Calendar.MONTH), 
      cal.get(Calendar.DAY_OF_MONTH)); 

datePicker.updateDate(1988,9,8); 
相關問題