2

私のアプリにDatePickerDialogを実装しましたが、Lollipopと次の問題があります。DatePickerDialogが先週表示されていません

コードスニペット:

void setDate(final EditText ed) { 
    Calendar mcurrentTime = Calendar.getInstance(); 
    int day = mcurrentTime.get(Calendar.DAY_OF_MONTH); 
    int month = mcurrentTime.get(Calendar.MONTH); 
    int year = mcurrentTime.get(Calendar.YEAR); 
    DatePickerDialog mTimePicker; 
    mTimePicker = new DatePickerDialog(getContext(), new OnDateSetListener() { 
     @Override 
     public void onDateSet(DatePicker view, int selectedYear, int monthOfYear, int dayOfMonth) { 
      // TODO Auto-generated method stub 
      monthOfYear += 1; 
      ed.setText(selectedYear + "-" + monthOfYear + "-" + dayOfMonth); 
     } 
    }, year, month, day); 
    //mTimePicker.setTitle("Select Date:"); 
    mTimePicker.show(); 
} 

私は先週の日付を選択することはできませんよと押し上の次は来月表示されます。

誰もこのような問題に遭遇しましたか?誰にも解決策がありますか?

ご協力いただきありがとうございます。

+0

このカレンダーを使用するクラスを共有してください。 –

+0

http://hastebin.com/dezijigaku.avrasm @PRIYAPARASHAR –

+0

現在の日を最低日として設定しているためです。 –

答えて

0

あなたのcalendarからMin and Max dateを設定することができますが、ここで私はこれが役に立てば幸い

Calendar calendar = Calendar.getInstance(); 
       DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), 
         new DatePickerDialog.OnDateSetListener() { 
          @Override 
          public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
           Calendar calendar1 = Calendar.getInstance(); 
           calendar1.set(year, monthOfYear, dayOfMonth); 
           Date date = new Date(calendar1.getTimeInMillis()); 
           if (date.after(new Date(Calendar.getInstance().getTimeInMillis()))) { 
            Toast.makeText(ProfileFirstFragment.this.getActivity(), 
              getString(R.string.error_wrong_date_selected), Toast.LENGTH_SHORT).show(); 
            return; 
           } 

           dob.setText(getString(R.string.date_slash, new String[]{String.valueOf(dayOfMonth), 
             String.valueOf(monthOfYear + 1), String.valueOf(year)})); 
          } 
         }, 
         1990, 0, 1); //this can be your calendar startdate when you open the calendar 
       calendar.set(Calendar.getInstance().get(Calendar.YEAR), Calendar.getInstance().get(Calendar.MONTH), 
         Calendar.getInstance().get(Calendar.DAY_OF_MONTH), Calendar.getInstance().getMaximum(Calendar.HOUR_OF_DAY), 
         Calendar.getInstance().getMaximum(Calendar.MINUTE), Calendar.getInstance().getMaximum(Calendar.SECOND)); 
       datePickerDialog.getDatePicker().setMaxDate(calendar.getTimeInMillis());// this will be your max date you can select 
       calendar.add(Calendar.YEAR, -90); 
       datePickerDialog.getDatePicker().setMinDate(calendar.getTimeInMillis()); 
       datePickerDialog.show();//this will be minimum date in your calendar 

以下のコードスニペットです!

0

DatePickerDialogインスタンスを作成中に、alllowユーザーに許可する最小の日付を渡します。 show呼び出し方法updateDate

 mDatePicker.updateDate(year,month,day); // for current date to set selected 
0

前に、私も同じ問題を見ている

new DatePickerDialog(getContext(), new OnDateSetListener() { 
      @Override 
      public void onDateSet(DatePicker view, int selectedYear, 
            int monthOfYear, int dayOfMonth) { 
       // TODO 
      } 
    }, year, month, 1); // for current month's first day as minimum 

次の行では、。

画面サイズが小さいことから生じる問題と月の最後の週オフので、DatePickerのカットのようです...

を分または日付ピッカーに設定し、最大の日付とは何の関係もありません(または、画面が本当に小さい場合はそれ以上)、 '日'の領域はスクロールできません(上下)...左右にスクロールすると前/次の月に移動します...

修正は、日付ピッカーの '日数'領域を垂直スクロール可能にすることですが、これはデフォルトのアンドロイドウィジェットであるため、これについてどうやって行うべきかわかりません。-_-

P.私はこれが答えではないことを知っていますが、私の担当者がコメントをするのを妨げるので、これは私には唯一のオプションです...

関連する問題