试图从android日期选择器返回日期

时间:2014-03-18 21:58:14

标签: android date datepicker

在过去24小时内,我一直试图找到有关我的问题的文章,但我仍然感到困惑。如果我错过了以前回答过这个问题的地方,我很抱歉,但我希望你们所有人都能帮助我理解我所缺少的一切。

概要:我想用日期选择器填充一些文本框,并且无法理解如何返回所选日期,以便我可以填充相应的文本框。

基本上我正在尝试实施针对Android设备> = 4.0的标准日期选择器。

public static class DatePickerFragment extends DialogFragment
                        implements DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in 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);

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {
        // Do something with the date chosen by the user
    }
}

public void showDatePickerDialog(View v) {
    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(getSupportFragmentManager(), "datePicker");
}

你会注意到这是android文档示例中的代码,可以在这里找到:http://developer.android.com/guide/topics/ui/controls/pickers.html 我在一个更大的项目中实现这个代码,日期选择器正常,日期被选中等等。 我遇到的问题是在用户选择日期后获取日期。基本上用户选择日期然后没有任何反应。我想要做的是在选择后使用日期填充特定文本框。这将在几个文本框中发生,因此我不能将其硬编码到onDateSet函数中。 我的想法是通过创建日期选择器来传递textBox的id,但我不完全确定如何做到这一点。

这是我的第一个Android项目,专注于理解,而不仅仅是获得一个有效的项目,谢谢。

2 个答案:

答案 0 :(得分:0)

" onDateSet"当用户选择日期时,应该调用该方法。 在此方法中,您可以使用参数中传递的年,月和日。

答案 1 :(得分:0)

我不知道这是否是最好的方法,但我这样解决:

  • 我有两个按钮,A和B.
  • 当我点击按钮A时,会出现一个DatePicker,用户会选择日期。
  • 确认日期后,按钮A中的文本将设置为所选的日期。
  • 按钮B的行为相同。

这是按下按钮A或B时的功能:

public void selectDateButtons(View view){


    if(view.getId() == R.id.buttonA)
    {
            clickedButton = R.id.buttonA;
    }else{
            clickedButton = R.id.buttonB;
    }

    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(getSupportFragmentManager(), "datePicker");


}

clickedButton是一个静态全局变量。

然后声明子类

public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in 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);
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    @Override
    public void onDateSet(DatePicker view, int year, int month, int day) {

        if(clickedButton == R.id.ButtonA)
        {
            ButtonA.setText(String.valueOf(day) + "/"
                + String.valueOf(month + 1) + "/" + String.valueOf(year));

        } else {
            ButtonB.setText(String.valueOf(day) + "/"
                    + String.valueOf(month + 1) + "/" + String.valueOf(year));
        }
    }
}

别忘了,您的主要活动应该扩展FragmentActivity。 希望对你有用! 最好的问候!