Java 如何在物料组件的日期范围选择器上使用setSelection?
我想在打开dateRangePicker时显示所选的日期范围,我知道setSelected方法适用于此,我尝试过它不起作用,或者可能我做错了什么,请帮助 我已经试过了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
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抱歉,我不想设置最小和最大日期,而且该链接询问的是日期选择器,我在这里询问的是日期范围选择器,就像这里一样