java - Android Studio - 在 TextView 上显示 dateRangePicker 中的选定日期
问题描述
有谁知道如何在 TextView 上显示 dateRangePicker 中的选定日期?一旦用户从对话框中选择了日期,此功能应该显示选定的日期范围。
这是我的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_cuti);
btnDate = findViewById(R.id.btnDate);
pilihDate = findViewById(R.id.mvPilihTarikh);
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.clear();
Pair<Long, Long> selectionDates=null;
Long today = MaterialDatePicker.todayInUtcMilliseconds();
calendar.setTimeInMillis(today);
calendar.roll(Calendar.MONTH, Calendar.JANUARY);
Long january = calendar.getTimeInMillis();
calendar.roll(Calendar.MONTH, Calendar.DECEMBER);
Long december = calendar.getTimeInMillis();
CalendarConstraints.Builder constraintBuilder = new CalendarConstraints.Builder();
constraintBuilder.setValidator(DateValidatorPointForward.now());
MaterialDatePicker.Builder<Pair<Long, Long>> builder = MaterialDatePicker.Builder.dateRangePicker();
CalendarConstraints.Builder constraintsBuilder = new CalendarConstraints.Builder();
builder.setCalendarConstraints(constraintsBuilder.build());
MaterialDatePicker<?> picker = builder.build();
picker.show(getSupportFragmentManager(), builder.toString());
builder.setTitleText("PILIH TARIKH");
builder.setSelection(selectionDates);
builder.setCalendarConstraints(constraintBuilder.build());
MaterialDatePicker materialDatePicker = builder.build();
btnDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
materialDatePicker.show(getSupportFragmentManager(), materialDatePicker.toString());
}
});
}
解决方案
您可以查看本教程。它使用材料日期选择器。
https://www.geeksforgeeks.org/material-design-date-picker-in-android/
final MaterialDatePicker materialDatePicker = materialDateBuilder.build();
// handle select date button which opens the
// material design date picker
mPickDateButton.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
// getSupportFragmentManager() to
// interact with the fragments
// associated with the material design
// date picker tag is to get any error
// in logcat
materialDatePicker.show(getSupportFragmentManager(), "MATERIAL_DATE_PICKER");
}
});
// now handle the positive button click from the
// material design date picker
materialDatePicker.addOnPositiveButtonClickListener(
new MaterialPickerOnPositiveButtonClickListener() {
@SuppressLint("SetTextI18n")
@Override
public void onPositiveButtonClick(Object selection) {
// if the user clicks on the positive
// button that is ok button update the
// selected date
mShowSelectedDateText.setText("Selected Date is : " + materialDatePicker.getHeaderText());
// in the above statement, getHeaderText
// is the selected date preview from the
// dialog
}
});
推荐阅读
- javascript - 是否可以通过 JS 在不迭代元素的情况下更改 DOM 树子集的相对 url 的基础?
- android - 获取过多数据时如何摆脱冻结屏幕
- docker - 如何在谷歌云平台上运行一个大的 docker 镜像?
- iis - IIS 重写规则存储在 XML 文件中,该文件在 Web 发布时被删除
- php - 如何使用 PHP password_hash 函数对数据库中的所有密码进行哈希处理
- linq-to-sql - 如何在 LINQ 中添加新的返回类型
- asterisk - 星号 - 宏不可用
- python - Python,Panda.read_excel 从一张纸读取多组数据的问题
- sql - 使用 Node.js 客户端和连接池在 Postgres 中最快的查询 - 存储函数还是准备好的语句?
- javascript - ExtJs 第三方依赖在使用 app.json 时默认不起作用