2014-02-17 1 views
8

Android에서 날짜 선택기를 맞춤 설정하여 요일과 월 (즉, 1 년) 만 표시하도록하는 방법을 찾고 있습니다.Android 날짜 선택기에 일 및 월이있는 경우

Dialog dlg = new DatePickerDialog(context, datePickerListener, dueDateCalendar.get(Calendar.YEAR), dueDateCalendar.get(Calendar.MONTH), dueDateCalendar.get(Calendar.DAY_OF_MONTH)); 
    try { 
     Field f[] = dlg.getClass().getDeclaredFields(); 
     for (Field field : f) { 
      String name = field.getName(); 
      if (name.equals("YEAR")){ 
       field.setAccessible(true); 
       Object dayPicker = new Object(); 
       dayPicker = field.get(dlg); 
       ((View) dayPicker).setVisibility(View.GONE); 
      } 
     } 
    } catch (Exception e){ 
     // TODO: should not happen 
     e.printStackTrace(); 
    } 
    return dlg; 

하지만 ((보기) dayPicker) .setVisibility (View.GONE)의 캐스트 예외가 계속;

나는 How to display date picker for android with only month and year fields?에 따라 대화 상자를 만드는 오전

java.lang.ClassCastException가이 : java.lang.String의는 android.view.View에서

어떤 아이디어가 캐스팅 될 수없는 이유는 무엇입니까?

답변

17

여기이 내용을 설명해주십시오. 그것의 APIv11 +하지만 낮은 API 버전에 다른 방법이 있습니다.

DatePickerDialog dlg = new DatePickerDialog(context, datePickerListener, 
    dueDateCalendar.get(Calendar.YEAR), 
    dueDateCalendar.get(Calendar.MONTH), 
    dueDateCalendar.get(Calendar.DAY_OF_MONTH)); 
int year = context.getResources().getIdentifier("android:id/year", null, null); 
if(year != 0){ 
    View yearPicker = dlg.getDatePicker().findViewById(year); 
    if(yearPicker != null){ 
     yearPicker.setVisibility(View.GONE); 
    } 
} 
return dlg; 

업데이트 코드 :이 작업을 수행해야합니다.

DatePickerDialog dlg = new DatePickerDialog(context, datePickerListener, 
    dueDateCalendar.get(Calendar.YEAR), 
    dueDateCalendar.get(Calendar.MONTH), 
    dueDateCalendar.get(Calendar.DAY_OF_MONTH)) 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     int year = getContext().getResources() 
      .getIdentifier("android:id/year", null, null); 
     if(year != 0){ 
      View yearPicker = findViewById(year); 
      if(yearPicker != null){ 
       yearPicker.setVisibility(View.GONE); 
      } 
     } 
    } 
}; 
return dlg; 
+0

yearPicker를보기로 변경했습니다. yearPicker = dlg.findViewById (year); API 수준 문제를 피하기 위해 준수하지만 null을 반환합니다. 어떤 아이디어? – checklist

+0

코드가 업데이트되었습니다. – Simon

+2

롤리팝도 사용할 수 있습니다! –