Trying to set text of EditText from DatePicker DialogFragment

送分小仙女□ 提交于 2019-11-29 12:45:23

You need to use an interface to get the data from the datepicker to the caller fragment:

public interface DateListener {
    void passDate(String date);
}

Create a member variable called mListener:

private DateListener mListener;

Override the onAttach & onDetach fragment methods:

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {
        mListener = (DateListener) activity;
    } catch (ClassCastException e) {
        throw new ClassCastException(activity.toString() + " must implement DateListener");
    }
}

@Override
public void onDetach() {
    super.onDetach();
    mListener = null;
}

Next, implement this interface in the caller fragment and override the passDate method:

@Override
public void passDate(String date) {
    // Do something with 'date', yourEditText.setText(date) for the example
}

And you should be good to go.

I have done this by below lines of code:

public class DatePickerDialogMy extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        DateSetting dateSetting=new DateSetting(getActivity());
        Calendar calendar= Calendar.getInstance();
        int year= calendar.get(calendar.YEAR);
        int month=calendar.get(calendar.MONTH);
        int day=calendar.get(calendar.DAY_OF_MONTH);
        DatePickerDialog dialog;
        dialog=new DatePickerDialog(getActivity(),dateSetting,year,month,day);
        return dialog;
    }
}

Second Class:

        public class DateSetting implements android.app.DatePickerDialog.OnDateSetListener {
            Context context;
            public DateSetting(Context context){
                this.context=context;

            }
            @Override
            public void onDateSet(DatePicker view, int year, int dateSetting, int dayOfMonth) {
                Toast.makeText(context, "selected date:" + dateSetting + "/" + dayOfMonth + "/" + year, Toast.LENGTH_LONG).show();
        //        MainActivity.test.setText(String.valueOf(dateSetting));
                MyActivity.dobEditText.setText(dateSetting+"/"+dayOfMonth+ "/" + year);
            }
        }

How to call:

 DatePickerDialogMy datePickerDialog = new DatePickerDialogMy();
                datePickerDialog.show(getSupportFragmentManager(), "date_picker");
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!