Как извлечь данные из DatePickerDialog в AlertDialog

У меня есть MainFragment откуда кнопка создает AlertDialog там есть несколько полей, и одним из них является дата, в кнопке даты я называю DatePickerDialog и выберите дату, поэтому мой вопрос:
Как я могу получить эту дату и установить ее на TextView диалогового окна предупреждения наMainFragment?

Это на AlertDialog на основном фрагменте:

public class FragmentInicio extends Fragment{
   String date;

  public void addDate(){

  View view = (LayoutInflater.from(getActivity())).inflate(R.layout.alert_dialog,null);

AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
alertDialog.setView(view);

final EditText date_EditText = view.findViewById(R.id.dateEditText);
final ImageButton dateButton= view.findViewById(R.id.tareaFechaButton);
dateButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        CalendarPickerFragment newFragment = new CalendarPickerFragment();
        newFragment.show(getFragmentManager(), "DatePicker");

    }
});

date_EditText.setText(date);

alertDialog.setTitle("New Date");
alertDialog.setCancelable(true).setPositiveButton("Save", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
       //Some stuff
    }
});

alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
    }
});
Dialog dialog = alertDialog.create();
dialog.show();

}

public static void displaydate(int year, int monthOfYear, int dayOfMonth) {
    date = String.format("%02d", dayOfMonth) + "/" + String.format("%02d", monthOfYear + 1) + "/" +
            String.format("%02d", year);
    Log.d("DTAG", "date: "+date);
}

}

Это на CalendarPickerFragment

Обновить

public class CalendarPickerFragment extends DialogFragment implements  DatePickerDialog.OnDateSetListener {

    private CalendarPickerFragment.OnDateReceiveCallBack mListener;
    private Context context;

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

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

Основная деятельность

public class MainActivty implements CalendarPickerFragment.OnDateReceiveCallBack{
@Override
    public void onDateReceive(int dd, int mm, int yy) {
        MainFragment.displaydate(dd,mm,yy);
    }
}

1 ответ

Решение

Вы можете сделать это либо уродливым способом получить своего родителя Activity от твоего Fragment используя этот метод, а затем с помощью сеттеров, чтобы заполнить атрибуты от вашего родителя Activityили либо используя интерфейсы, как показано здесь.

РЕДАКТИРОВАТЬ

Проверьте этот вопрос.

Другие вопросы по тегам