android - 片段中的datepicker问题

时间:2014-09-04 18:57:37

标签: android android-fragments android-dialogfragment android-datepicker

我正在将活动迁移到片段,我遇到了日期选择器对话框的问题,该对话框在旧活动中运行良好。我使用了这个例子: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

    }

}

1 个答案:

答案 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;
        }
    }
}