我正在将活动迁移到片段,我遇到了日期选择器对话框的问题,该对话框在旧活动中运行良好。我使用了这个例子:Implementing DatePicker in Fragment但我遇到了将所选日期发送回所需片段的问题。“日期选择器”片段嵌套在“常规信息”片段中。我的目标是将所选日期从DatePickerFragment发送到GeneralInfoFragment。
这是我到目前为止的代码:
“选择日期”按钮的收听者
public void onClick(View v) {
switch (v.getId()) {
case R.id.myDatePickerButton:
DialogFragment datepicker = new DatePickerFragment();
datepicker.show(getFragmentManager(), "datePicker");
break;
}
DatePickerFragment.java
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 day) {
Calendar c = Calendar.getInstance();
c.set(month, day, year);
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
String formattedDate = sdf.format(c.getTime());
String outputDOI = formattedDate.toString(); // variable I want to send to GeneralInfoFragment
}
}
答案 0 :(得分:0)
试试这个,按下图所示调用Fragment:
DialogFragment timepicker = DialogFragment.newInstance(1);
timepicker.setTargetFragment(GeneralInfoFragment.this, 1);
timepicker.show(getFragmentManager(), "datePicker");
您在Timepickerfragment中选择的值将提供给onActivityResult,在GeneralInfoFragment中添加
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case 1:
//do what calculations you want to perform on the received date from timepicker
break;
}
}
}