嗨,我也有同样的问题。我就是这样解决的:
第一步
让你的活动实现DatePickerDialog。OnDateSetListener(并将其从DialogFragment中删除)。
第二步
,替换源代码
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;
第三步
,在
活动
(并将其从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;
}
}}