Java 如何在物料组件的日期范围选择器上使用setSelection?

Java 如何在物料组件的日期范围选择器上使用setSelection?,java,android,material-components-android,daterangepicker,Java,Android,Material Components Android,Daterangepicker,我想在打开dateRangePicker时显示所选的日期范围,我知道setSelected方法适用于此,我尝试过它不起作用,或者可能我做错了什么,请帮助 我已经试过了 public void openDateRangePicker(View view) { MaterialDatePicker.Builder builder = MaterialDatePicker.Builder.dateRangePicker(); CalendarCons

我想在打开dateRangePicker时显示所选的日期范围,我知道setSelected方法适用于此,我尝试过它不起作用,或者可能我做错了什么,请帮助

我已经试过了

public void openDateRangePicker(View view) {
 MaterialDatePicker.Builder builder =
                MaterialDatePicker.Builder.dateRangePicker();

        CalendarConstraints.Builder constraintsBuilder = new CalendarConstraints.Builder();

        MaterialDatePicker<Pair<Long,Long>> picker = builder.build();
        builder.setCalendarConstraints(constraintsBuilder.build());

        picker.setStyle(DialogFragment.STYLE_NORMAL, R.style.Custom_MaterialCalendar_Fullscreen);
        if(!firstDateStr.isEmpty() || !endDateStr.isEmpty()){
            builder.setSelection(selectionDates);

        }
        picker.show(getSupportFragmentManager(), picker.toString());



    picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Pair<Long, Long>>() {
        @Override
        public void onPositiveButtonClick(Pair<Long, Long> selection) {

            long firstDateLong = selection.first;
            Date firstDate=new Date(firstDateLong);
            long endDateLong = selection.second;
            Date endDate=new Date(endDateLong);

            SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());

            //format yyyy-MM-dd
            firstDateStr = sdf2.format(firstDate);
            endDateStr = sdf2.format(endDate);
            selectionDates = selection;


            selectedDatesStr = firstDateStr + " to " + endDateStr ;//+ " (" + (daysBetween + 1) + " days)";
            tvDates.setText(selectedDatesStr);
            tvDates.setTypeface(Typeface.DEFAULT_BOLD);
            picker.dismiss();

        }
    }); 

}
public void openDateRangePicker(视图){
材料数据采集器。生成器=
MaterialDatePicker.Builder.dateRangePicker();
CalendarConstraints.Builder constraintsBuilder=新的CalendarConstraints.Builder();
MaterialDatePicker-picker=builder.build();
setCalendarConstraints(constraintsBuilder.build());
picker.setStyle(DialogFragment.STYLE\u NORMAL,R.STYLE.Custom\u MaterialCalendar\u全屏);
如果(!firstDateStr.isEmpty()| |!endDateStr.isEmpty()){
建造商设置选择(选择日期);
}
show(getSupportFragmentManager(),picker.toString());
addOnPositiveButtonClickListener(新材料PickerOnPositiveButtonClickListener()){
@凌驾
public void onPositiveButtonClick(对选择){
long firstDateLong=selection.first;
Date firstDate=新日期(firstDateLong);
long-endDateLong=selection.second;
日期endDate=新日期(endDateLong);
SimpleDataFormat sdf2=新的SimpleDataFormat(“yyyy-MM-dd”,Locale.getDefault());
//格式yyyy MM dd
firstDateStr=sdf2.format(firstDate);
endDateStr=sdf2.format(endDate);
selectionDates=选择;
selectedDatesStr=firstDateStr+“到”+endDateStr;//+”(“+(介于+1之间的天数)+“天”);
tvDates.setText(selectedDatesStr);
tvDates.setTypeface(Typeface.DEFAULT_BOLD);
picker.disclose();
}
}); 
}

我在这里做的是保存选择对象,并在下次打开选择器时使用它来显示范围,但它在没有任何选择的情况下打开,就像第一次打开一样

行的顺序很重要,您需要调用
builder.build()完成构建器设置后

  String firstDateStr="";
  String endDateStr="";

Pair<Long, Long> selectionDates=null;
public void openDateRangePicker() {

   MaterialDatePicker.Builder builder =
            MaterialDatePicker.Builder.dateRangePicker();

    CalendarConstraints.Builder constraintsBuilder = new CalendarConstraints.Builder();

    builder.setCalendarConstraints(constraintsBuilder.build());

   // picker.setStyle(DialogFragment.STYLE_NORMAL);
    if(selectionDates!=null){
        builder.setSelection(selectionDates);

    }
    MaterialDatePicker<Pair<Long,Long>> picker = builder.build();
    picker.show(getSupportFragmentManager(), picker.toString());



    picker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Pair<Long, Long>>() {
        @Override
        public void onPositiveButtonClick(Pair<Long, Long> selection) {

            long firstDateLong = selection.first;
            Date firstDate=new Date(firstDateLong);
            long endDateLong = selection.second;
            Date endDate=new Date(endDateLong);

            SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());

            //format yyyy-MM-dd
            firstDateStr = sdf2.format(firstDate);
            endDateStr = sdf2.format(endDate);
            selectionDates = selection;


            selectedDatesStr = firstDateStr + " to " + endDateStr ;//+ " (" + (daysBetween + 1) + " days)";
           tvDates.setText(selectedDatesStr);
          tvDates.setTypeface(Typeface.DEFAULT_BOLD);
            picker.dismiss();

        }
    });

}
String firstDateStr=”“;
字符串endDateStr=“”;
Pair selectionDates=null;
public void openDateRangePicker(){
材料数据采集器。生成器=
MaterialDatePicker.Builder.dateRangePicker();
CalendarConstraints.Builder constraintsBuilder=新的CalendarConstraints.Builder();
setCalendarConstraints(constraintsBuilder.build());
//选择器.setStyle(DialogFragment.STYLE_NORMAL);
如果(selectionDates!=null){
建造商设置选择(选择日期);
}
MaterialDatePicker-picker=builder.build();
show(getSupportFragmentManager(),picker.toString());
addOnPositiveButtonClickListener(新材料PickerOnPositiveButtonClickListener()){
@凌驾
public void onPositiveButtonClick(对选择){
long firstDateLong=selection.first;
Date firstDate=新日期(firstDateLong);
long-endDateLong=selection.second;
日期endDate=新日期(endDateLong);
SimpleDataFormat sdf2=新的SimpleDataFormat(“yyyy-MM-dd”,Locale.getDefault());
//格式yyyy MM dd
firstDateStr=sdf2.format(firstDate);
endDateStr=sdf2.format(endDate);
selectionDates=选择;
selectedDatesStr=firstDateStr+“到”+endDateStr;//+”(“+(介于+1之间的天数)+“天”);
tvDates.setText(selectedDatesStr);
tvDates.setTypeface(Typeface.DEFAULT_BOLD);
picker.disclose();
}
});
}

您可以使用此链接…@SanjayRavichandran抱歉,我不想设置最小和最大日期,而且该链接询问的是日期选择器,我在这里询问的是日期范围选择器,就像这里一样