且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何更改正在运行的AlertDialog的文本

更新时间:2023-12-03 18:07:34

好,这样您就可以使用alertDialog中已经建立的监听器了 以下应该是您的CalendarPickerFragment

Ok so you can use the listener you have already craeted in your alertDialog Following should be your CalendarPickerFragment

    public class CalendarPickerFragment extends DialogFragment implements  DatePickerDialog.OnDateSetListener {

        private CalendarPickerFragment.OnDateReceiveCallBack mListener;
        private Context context;

        private static CalendarPickerFragment.OnDateReceiveCallBack mListenerForAlertDialog;

        public interface OnDateReceiveCallBack {
            public void onDateReceive(int dd, int mm, int yy);
        }

        public static CalendarPickerFragment getInstance(CalendarPickerFragment.OnDateReceiveCallBack callback) {
            mListenerForAlertDialog = callback;
            return new CalendarPickerFragment();
        }

        @Override
        public void onAttach(Context context) {
            super.onAttach(context);
            this.context = context;

            try {
                mListener = (CalendarPickerFragment.OnDateReceiveCallBack) context;
            } catch (ClassCastException e) {
                throw new ClassCastException(context.toString() + " must implement OnDateSetListener");
            }
        }

        public CalendarPickerFragment() {
        }


        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {

            final Calendar cal = Calendar.getInstance();
            int year = cal.get(Calendar.YEAR);
            int month = cal.get(Calendar.MONTH);
            int day = cal.get(Calendar.DAY_OF_MONTH);

            return new DatePickerDialog(getActivity(), this, year, month, day);
        }

        @Override
        public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
            Log.d("tag", i + "/" + "/" + i1 + "/" + i2);
            mListener.onDateReceive(i, i1, i2);
            mListenerForAlertDialog.onDateReceive(i, i1, i2);
        }

    }

现在按如下所示初始化此fragmnet

Now initialise this fragmnet as follows

CalendarPickerFragment newFragment =  CalendarPickerFragment.getInstance(new CalendarPickerFragment.OnDateReceiveCallBack() {
                @Override
                public void onDateReceive(int dd, int mm, int yy) {
                    // boom you wil get the call back on each date selection here
                    //eidtTextOfALertDialog.setText("whatEver")
                }
            });
            newFragment.show(getFragmentManager(), "DatePicker");