마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

데이트피커 질문입니다.

0 추천

xml 에서 데이트피커로 하던, java코드에서 데이트피커 다이얼로그를 불러오던

for (Field dateField : f) {
                if(dateField.getName().equals("mDatePicker") || dateField.getName().equals("mDateSpinner")) {
                    dateField.setAccessible(true);

                    DatePicker datePicker = (DatePicker)dateField.get(datePickerDialog);

                    Field datePickerFields[] = dateField.getType().getDeclaredFields();

                    for(Field datePickerField : datePickerFields) {
                        if("mDaySpinner".equals(datePickerField.getName())) {
                            datePickerField.setAccessible(true);
                            Object dayPicker = new Object();
                            dayPicker = datePickerField.get(datePicker);
                            ((View)dayPicker).setVisibility(View.GONE);
                        }
                    }
                }
            }
            datePickerDialog.show();

 

 

위에 코드에서 제일안쪽 for문. if문에 보면 mDaySpinner 란 이름을 만나면 숨기게 되어있습니다.

DatePicker 를 봐도 mDaySpinner 가 일을 보여주는거 같은데요.

문제는 디버그 모드로 돌려봐도 딜리게이트, 로그, 모드캘린더, 모드 스피너 밖에 안나와서

더이상 안쪽으로 들어가지 않고 그대로 빠져나와버린단겁니다.

 

중간과정이 뭔가 하나 생략된거 같은데.. 혹시 어떤이름을 if에 넣고 그안에서 mDaySpinner 를 

GONE 해줘야하는건가요??

익명사용자 님이 2015년 9월 3일 질문

1개의 답변

0 추천
 
채택된 답변

자답입니다.

 

 public Dialog YearMonthPicker()
    {
        Calendar c = Calendar.getInstance();

        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH)+1;
        int day = c.get(Calendar.DAY_OF_MONTH);

        DatePickerDialog dialog = new DatePickerDialog(A_CarTrade_Sell.this, android.R.style.Theme_Holo_Light_Dialog_NoActionBar,
                onDateSetListener, year,month,day);

        dialog.getDatePicker().setSpinnersShown(true);
        dialog.getDatePicker().setCalendarViewShown(false);

        LinearLayout pickerParentLayout = (LinearLayout)dialog.getDatePicker().getChildAt(0);
        LinearLayout pickerSpinnersHolder = (LinearLayout)pickerParentLayout.getChildAt(0);

        pickerSpinnersHolder.getChildAt(2).setVisibility(View.GONE);

        return dialog;
    }


    private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            Year = year;
            Month = monthOfYear+1;

            tvCarYear.setText(Year+" 년 "+ Month+" 월");
        }
    };

 

이런식으로 해결했네요

헌데 타이틀을 달아주면 일도 보이는게 함정입니다.

익명사용자 님이 2015년 9월 3일 답변
...