【问题标题】:android - issues with datepicker within a fragmentandroid - 片段中的日期选择器问题
【发布时间】:2014-09-04 18:57:37
【问题描述】:

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

    }

}

【问题讨论】:

  • 您是否遇到了一些错误?也许您可以发布您的错误日志?
  • @Sash_KP 没有错误,它只是没有更新我的“一般信息”片段。对话框可以正常打开和关闭。

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


【解决方案1】:

试试这个,调用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;
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    相关资源
    最近更新 更多