1

DatePickerwho extendsDialogFragmentと implementsというカスタム クラスがありますDatePickerDialog.OnDateSetListenerが、私の問題は、y がonDateChangeMethodandDialogFragmentのみDialogInterface.OnCancelListenerをリッスンする必要があるためDialogInterface.OnDismissListenerです。

どうやってやるの?メソッドを実装OnDateChangedListenerしてオーバーライドしようとしましonDateChangeたが、うまくいきませんでした。コードは次のとおりです。

public class DatePicker extends DialogFragment implements
        DatePickerDialog.OnDateSetListener, OnDateChangedListener {

    private OnDateSetListener _onDateSetListener;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);

        _onDateSetListener = (OnDateSetListener) activity;
    }


    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Date initialValue = null;
        String[] buttons = getArguments().getStringArray("buttons");

        Long initialValueLong = getArguments().getLong("initialValue");
        if (initialValue == null) {
            initialValue = new Date();
        }

        Calendar calendar = GregorianCalendar.getInstance();
        calendar.setTimeInMillis(initialValueLong);

        DatePickerDialog dialog = new DatePickerDialog(getActivity(), this,
                calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
                calendar.get(Calendar.DATE));


        return dialog;
    }

     @Override
     public void onDateSet(android.widget.DatePicker view, int year,
           int monthOfYear, int dayOfMonth) {
           _onDateSetListener.onDateSet(new GregorianCalendar(year, monthOfYear,
               dayOfMonth).getTime(), getArguments().get("tag"));
     }

    @Override
    public void onDateChanged(android.widget.DatePicker view, int year,
            int monthOfYear, int dayOfMonth) {

        // THIS METHOD NEVER CALLED

    }
}
4

2 に答える 2

0

私は解決策を見つけました.DatePickerを取得してDatePicker.initメソッドを設定するだけです

android.widget.DatePicker datePicker = dialog.getDatePicker(); datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), new OnDateChangedListener() { public void onDateChanged(android.widget.DatePicker view, int year, int month, int day) { _onDateSetListener.dateChange(new GregorianCalendar( year, month, day).getTime(), getArguments() .get("tag")); } });

于 2014-07-16T13:35:03.563 に答える