Android Studio - 在 TextView 上显示来自 dateRangePicker 的选定日期

问题描述 投票:0回答:2

有谁知道如何在 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());

        }
    });

}
java android date daterangepicker
2个回答
3
投票

您可以查看本教程。它使用材料日期选择器。

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
                }
            });

0
投票

我遇到了同样的问题,我是这样解决的:

public class AmountFilter extends Fragment {

    RangeSlider rangeSlider;
    private Button mPickDateButton;
    private TextView mShowSelectedDateText;

    public AmountFilter() {
     }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v =  inflater.inflate(R.layout.view_frag, container, false);

       


        mPickDateButton = v.findViewById(R.id.pick_date_button);
        mShowSelectedDateText = v.findViewById(R.id.show_selected_date);
 
        MaterialDatePicker.Builder<Pair<Long, Long>> materialDateBuilder = MaterialDatePicker.Builder.dateRangePicker();

        materialDateBuilder.setTitleText("SELECT A DATE");
        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) {                        materialDatePicker.show(getActivity().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
                        // will return selected date preview from the
                        // dialog
                    }
                });

        return v;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.