2015-04-23 67 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); 
相关问题