Получить дату из DatePickerDialog

271
05 сентября 2017, 09:17

Есть класс DialogObject наследник от DialogFragment:

public class DialogObject extends DialogFragment{
    private TextView tvDate;
    private DatePickerFragment newFragment;
    public static DialogObject newInstance(String title, String date) {
        DialogObject dialogObject = new DialogObject();
        dialogObject.setCancelable(false);
        Bundle args = new Bundle();
        args.putString("title", title);
        args.putString("date", date);
        dialogObject.setArguments(args);
        return dialogObject;
    }
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        String title = getArguments().getString("title");
        String date = getArguments().getString("date");
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle(title);
        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.layout.dialog_object, null);
        tvDate = (TextView) view.findViewById(R.id.tvDate);
        tvDate.setText(date);
        tvDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                newFragment = new DatePickerFragment();
                newFragment.show(getFragmentManager(), "datePicker");
            }
        });
        builder.setView(view);
        builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
            }
        });
        builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        return builder.create();
    }
}

из которого вызывается DatePickerFragment:

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
    }
}

Вопрос, как при нажатии кнопки ок в классе DatePickerFragment, в классе DialogObject назначить TextView tvDate выбранную дату?

Answer 1

Используйте LocalBroadcastManager

Пример реализации можете посмотреть здесь: https://stackoverflow.com/a/8875292/8544322

READ ALSO
Как добавлять в подключаемое поле при использовании Hybernate,JPA?

Как добавлять в подключаемое поле при использовании Hybernate,JPA?

Создал необходимые классы-сущности, аннотации, подключение, всё работаетХочу добавить в "подключаемое" поле, тип которого MainCountryEntity, значение...

178
Описание схожих классов Java

Описание схожих классов Java

Нужно описать 2 класса, подскажите правильно ли я это сделал? Если нет подскажите как сделать правильноЗаранее спасибо

230
Хранение в массиве ссылок на другой массив

Хранение в массиве ссылок на другой массив

Как можно хранить в одном массиве (1)ссылки на другой массив(2)Производя изменения во втором массиве менялись значения в первом

172
Крашится приложение в эмуляторе Android Studio

Крашится приложение в эмуляторе Android Studio

Я использую эмулятор AVD Android Studio в UbuntuЭмулятор работает нормально только тогда когда я запускаю приложения стандартные

255