在过去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项目,专注于理解,而不仅仅是获得一个有效的项目,谢谢。
答案 0 :(得分:0)
" onDateSet"当用户选择日期时,应该调用该方法。 在此方法中,您可以使用参数中传递的年,月和日。
答案 1 :(得分:0)
我不知道这是否是最好的方法,但我这样解决:
这是按下按钮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。 希望对你有用! 最好的问候!