How to change the text of a running AlertDialog

后端 未结 1 693
轮回少年
轮回少年 2021-01-23 14:44

How do you change the current string of a text on a AlertDialog after you click a button that selects a date from a CalendarPickerFragment.

This the

相关标签:
1条回答
  • 2021-01-23 15:20

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

    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");
    
    0 讨论(0)
提交回复
热议问题