首页 > 解决方案 > 未调用 OnDateSetListener

问题描述

我已经阅读了这篇文章,但没有任何帮助。侦听器仍未被调用。这是我的代码:

private void callDatePicker() {
        // получаем текущую дату
        final Calendar cal = Calendar.getInstance();
        mYear = cal.get(Calendar.YEAR);
        mMonth = cal.get(Calendar.MONTH);
        mDay = cal.get(Calendar.DAY_OF_MONTH);

        dl = new OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                String editTextDateParam = dayOfMonth + "." + (monthOfYear + 1) + "." + year;
                date_text.setText(editTextDateParam);
                Log.d("BIMI", editTextDateParam);
            }
        };

        // инициализируем диалог выбора даты текущими значениями
        DatePickerDialog datePickerDialog = new DatePickerDialog(this, dl, mYear, mMonth, mDay);

        datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        if (which == DialogInterface.BUTTON_POSITIVE) {
                            String editTextDateParam = mDay + "." + (mMonth + 1) + "." + mYear;
                            Log.d("GROM", editTextDateParam);
                            date_text.setText(editTextDateParam);
                        }
                    }
                });

        datePickerDialog.show();
    }

单击按钮时,会在 AlertDialog 中调用 callDatePicker。

标签: javaandroiddatepicker

解决方案


如果您同时设置了BUTTON_POSITIVE单击侦听器,OnDateSetListener则只会调用正按钮单击。如果你想打电话,OnDateSetListener那么不要设置按钮。如果您需要更改颜色、文本等按钮的属性,请在setOnShowListener. 所以你的最终代码看起来像这样。

private void callDatePicker() {
        // получаем текущую дату
        int mYear,mMonth,mDay;
        final Calendar cal = Calendar.getInstance();
        mYear = cal.get(Calendar.YEAR);
        mMonth = cal.get(Calendar.MONTH);
        mDay = cal.get(Calendar.DAY_OF_MONTH);

        DatePickerDialog.OnDateSetListener dl = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                String editTextDateParam = dayOfMonth + "." + (monthOfYear + 1) + "." + year;
//                date_text.setText(editTextDateParam);
                Log.d("BIMI", editTextDateParam);
            }
        };

        // инициализируем диалог выбора даты текущими значениями
        DatePickerDialog datePickerDialog = new DatePickerDialog(this, dl, mYear, mMonth, mDay);

        datePickerDialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface dialog) {
                Button pButton = datePickerDialog.getButton (DialogInterface.BUTTON_POSITIVE);
                pButton.setText ("Set date");
            }
        });

        datePickerDialog.show();
    }

推荐阅读