2015-01-21 3 views
1

내 응용 프로그램에서 DatePickerDialog를 사용하려고합니다. API 레벨이 11보다 큰 모든 기기에서 완벽하게 작동하지만 API 레벨이 11보다 작지는 않습니다. 여기 API 수준이 11보다 작은 DatePickerDialog

내 DatePickerDialog

package com.rh.bookmany.fragments; 

import java.util.Calendar; 

import com.rh.bookmany.interfaces.OnShowDateSelectedListener; 


import android.app.Activity; 
import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.os.Bundle; 
import android.support.v4.app.DialogFragment; 
import android.util.Log; 
import android.widget.DatePicker; 

//DatePicker 
    public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 


     int max;   
     OnShowDateSelectedListener onShowDateSelected; 

     public DatePickerFragment(,int max) { 
      this.max = max; 
     } 

     public Dialog onCreateDialog(Bundle savedInstanceState) { 

      // Use the current date as the default date in the picker 
      final Calendar c = Calendar.getInstance(); 
      final Calendar c2 = Calendar.getInstance(); 
      c2.add(Calendar.DATE, max); 
      int year = c.get(Calendar.YEAR); 
      int month = c.get(Calendar.MONTH); 
      int day = c.get(Calendar.DAY_OF_MONTH); 


      // new instance of DatePickerDialog 
      DatePickerDialog dd = new DatePickerDialog(getActivity(),this,year, month, day); 
      dd.getDatePicker().setMinDate(c.getTimeInMillis()); //ERROR HERE 
      dd.getDatePicker().setMaxDate(c2.getTimeInMillis()); //ERROR HERE 

      /* 
       Lint says: 

       Call requires API level 11 (current min is 8): android.app.DatePickerDialog#getDatePicker 
       Call requires API level 11 (current min is 8): android.widget.DatePicker#setMinDate 
       Call requires API level 11 (current min is 8): android.widget.DatePicker#setMaxDate 
      */ 


      return dd; 
     } 

     @Override 
     public void onDateSet(DatePicker view, int year, int month, int day) { 

      Log.d("X","Date Picked:"+year+"-"+month+"-"+day); 


     } 

    } 

내가이

// Showing Date Picker with 4 days after today 
DialogFragment datePickerFragment = new DatePickerFragment(4); 
datePickerFragment.show(getActivity().getSupportFragmentManager(),"datepicker"); 

처럼 호출 오전과 보풀이

Call requires API level 11 (current min is 8): android.app.DatePickerDialog#getDatePicker 
Call requires API level 11 (current min is 8): android.widget.DatePicker#setMinDate 
Call requires API level 11 (current min is 8): android.widget.DatePicker#setMaxDate 

처럼 말한다 내 질문은 :

그것은 가능합니까? API 레벨 11 (getDatePicker(), setMinDate(), setMaxDate())에서 세 가지 메소드를 사용할 수 있습니다.

예인 경우 어떻게합니까? 다른 - 거기에 어떤 대안이 있습니까 ?? 날짜가 범위를 벗어가는 경우

+0

http://stackoverflow.com/questions/10836679/android-datepicker-min- (내가 NT를 최소 및 최대 내 뜻) 날짜 선택 도구를 시작할 수 있습니다 최대 날짜 - API 이전 - 레벨 -11 – PPD

답변

0

당신은

Calendar cal = Calendar.getInstance(Locale.getDefault()); 
     DatePickerDialog dd = new DatePickerDialog(getActivity(),this,year, month, day); 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
        dd.getDatePicker().setMinDate(c.getTimeInMillis()); 
        dd.getDatePicker().setMaxDate(c2.getTimeInMillis()); 

     } else { 
      final int minYear = c.getTimeInMillis().get(Calendar.YEAR); 
      final int minMonth = c.getTimeInMillis().get(Calendar.MONTH); 
      final int minDay = c.getTimeInMillis().get(Calendar.DAY_OF_MONTH); 

      final int maxYear = c2.getTimeInMillis().get(Calendar.YEAR); 
      final int maxMonth = c2.getTimeInMillis().get(Calendar.MONTH); 
      final int maxDay = c2.getTimeInMillis().get(Calendar.DAY_OF_MONTH); 

      this.datePicker.init(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), 
           cal.get(Calendar.DAY_OF_MONTH), 
        new OnDateChangedListener() { 

         public void onDateChanged(DatePicker view, int year, 
           int month, int day) { 
          Calendar newDate = Calendar.getInstance(); 
          newDate.set(year, month, day); 

          if (c.after(newDate)) { 
           view.init(minYear, minMonth, minDay, this); 
          }else if(c2.before(newDate){ 
        view.init(maxYear, maxMonth, maxDay, this); 
        } 
         } 
        }); 

     } 
관련 문제