Привет, у меня была такая же проблема. Вот как я это решаю:
Шаг 1 заставьте вашу деятельность реализовать DatePickerDialog.OnDateSetListener (и удалить его из DialogFragment).
Шаг 2, Замените код с onCreateDialog на:
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);
// Activity needs to implement this interface
DatePickerDialog.OnDateSetListener listener = (DatePickerDialog.OnDateSetListener) getActivity();
DatePickerDialog q = new DatePickerDialog(getActivity(), listener, year, month, day);
return q;
Шаг 3 , Переопределите метод onDateSet в своей активности (и удалите его из DialogFragment) и обновите текстовое поле, когда дата будет установлена.
Надеюсь, что он ответит на ваш вопрос:)
A Полный рабочий пример: (Чтобы его было легко понять :)):
public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {
TextView mChangeDateField;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mChangeDateField = findViewById(R.id.changeDateField);
}
public void setDateText(View view){
ClientChooseDateFragment newFragment =
new ClientChooseDateFragment();
newFragment.show(getSupportFragmentManager(),
"datePicker");
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
mChangeDateField.setText("-- " + year + "--- Month" +month);
}
public static class ClientChooseDateFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current time as the default values for the picker
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);
// Activity needs to implement this interface
DatePickerDialog.OnDateSetListener listener = (DatePickerDialog.OnDateSetListener) getActivity();
DatePickerDialog q = new DatePickerDialog(getActivity(), listener, year, month, day);
return q;
}
}}