我有一个DatePickerDialog,我想只查看月份和年份。我可以改变这个code? 谢谢
公共无效chooseDate2(视图v){
新DatePickerDialog(act.this,D1,
dateAndTime1.get(Calendar.YEAR)+ 2,
dateAndTime1.get(Calendar.MONTH)
dateAndTime1.get(Calendar.DAY_OF_MONTH))
。显示();
}
私人无效updateLabel2(){
scadenza.setText(fmtDateAndTime.format(dateAndTime1.getTime()));
}
DatePickerDialog.OnDateSetListener D1 =新DatePickerDialog.OnDateSetListener(){
公共无效onDateSet(DatePicker的观点,年整型,诠释monthOfYear,诠释DAYOFMONTH){
dateAndTime1.set(Calendar.YEAR,一年);
dateAndTime1.set(Calendar.MONTH,monthOfYear);
dateAndTime1.set(Calendar.DAY_OF_MONTH,DAYOFMONTH);
updateLabel2();
}
};
解决方案
请尝试以下code。它会显示一个的DatePicker
只有年和月(不含当天)
私人DatePickerDialog createDialogWithoutDateField(){
DatePickerDialog DPD =新DatePickerDialog(本,空,2014年,1,24);
尝试 {
java.lang.reflect.Field中的[] datePickerDialogFields = dpd.getClass()getDeclaredFields()。
对于(java.lang.reflect.Field中datePickerDialogField:datePickerDialogFields){
如果(datePickerDialogField.getName()。等于(mDatePicker)){
datePickerDialogField.setAccessible(真正的);
DatePicker的日期选择器=(DatePicker的)datePickerDialogField.get(DPD);
java.lang.reflect.Field中的[] datePickerFields = datePickerDialogField.getType()getDeclaredFields()。
对于(java.lang.reflect.Field中datePickerField:datePickerFields){
Log.i(测试,datePickerField.getName());
如果(mDaySpinner.equals(datePickerField.getName())){
datePickerField.setAccessible(真正的);
对象dayPicker = datePickerField.get(日期选择器);
((查看)dayPicker).setVisibility(View.GONE);
}
}
}
}
}
赶上(例外前){
}
返回DPD;
}
该方法返回一个日期选择器对话框。所以,在你的按钮的的onClick
方法中添加以下code,以显示你的对话框。
createDialogWithoutDateField()显示();
I have a DatePickerDialog and I want view only Month and Year. Can I change this code? Thanks
public void chooseDate2(View v) {
new DatePickerDialog(act.this, d1,
dateAndTime1.get(Calendar.YEAR) + 2,
dateAndTime1.get(Calendar.MONTH),
dateAndTime1.get(Calendar.DAY_OF_MONTH))
.show();
}
private void updateLabel2() {
scadenza.setText(fmtDateAndTime.format(dateAndTime1.getTime()));
}
DatePickerDialog.OnDateSetListener d1=new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
dateAndTime1.set(Calendar.YEAR, year);
dateAndTime1.set(Calendar.MONTH, monthOfYear);
dateAndTime1.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel2();
}
};
解决方案
Try the following code. It will show a DatePicker
with only the year and month (without day)
private DatePickerDialog createDialogWithoutDateField() {
DatePickerDialog dpd = new DatePickerDialog(this, null, 2014, 1, 24);
try {
java.lang.reflect.Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields();
for (java.lang.reflect.Field datePickerDialogField : datePickerDialogFields) {
if (datePickerDialogField.getName().equals("mDatePicker")) {
datePickerDialogField.setAccessible(true);
DatePicker datePicker = (DatePicker) datePickerDialogField.get(dpd);
java.lang.reflect.Field[] datePickerFields = datePickerDialogField.getType().getDeclaredFields();
for (java.lang.reflect.Field datePickerField : datePickerFields) {
Log.i("test", datePickerField.getName());
if ("mDaySpinner".equals(datePickerField.getName())) {
datePickerField.setAccessible(true);
Object dayPicker = datePickerField.get(datePicker);
((View) dayPicker).setVisibility(View.GONE);
}
}
}
}
}
catch (Exception ex) {
}
return dpd;
}
This method returns a date picker dialog. So , in your button's onClick
method add the following code to display your dialog.
createDialogWithoutDateField().show();