概述
安卓提供了现成的对话框,让用户选择一个时间或日期。每一个选择器控制时间(小时,分钟,AM/PM)或日期(月,日,年)的每一部分的选择。使用这些选择器帮助 确保用户正确的,格式化的,和适合的选择一个时间或日期。
我们推荐你使用
DialogFragment
来容纳每一个时间或日期选择器。
DialogFragment
为你管理对话框的生命周期并且允许你在不同的布局结构中显示该选择器,例如 手机中的基本对话框或在大屏幕中作为一部分嵌入。
尽管
DialogFragment是在安卓3.0(API 11)才第一次出现,如果你的应用支持3.0更早的版本——即使是安卓1.6——你可以在
support library使用
DialogFragment 来向后兼容。
注:下面是示例代码展示了为
DialogFragment
使用
support library
API来如何
创建一个时间选择器和日期选择器。如果你的应用
minSdkVersion 是11或之上,你可以直接使用
DialogFragment
.。
创建一个时间选择器
使用
DialogFragment来展示一个时间选择对话框(
TimePickerDialog
),你需要定义一个继承自
DialogFragment的
fragment 类,并且从该fragment的
onCreateDialog()方法中返回一个
TimePickerDialog。
注:如果你的应用支持的版本为比安卓3.0更老,确保你的安卓工程使用了
support library
将 DialogFragment延伸为时间选择器(time picker)
- 定义
onCreateDialog()来返回一个TimePickerDialog的引用
- 实现
TimePickerDialog.OnTimeSetListener接口来响应用户设置时间的事件
这里有个例子:
public static class TimePickerFragment extends DialogFragmentimplements TimePickerDialog.OnTimeSetListener {@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {// Use the current time as the default values for the pickerfinal Calendar c = Calendar.getInstance();int hour = c.get(Calendar.HOUR_OF_DAY);int minute = c.get(Calendar.MINUTE);// Create a new instance of TimePickerDialog and return itreturn new TimePickerDialog(getActivity(), this, hour, minute,DateFormat.is24HourFormat(getActivity()));}public void onTimeSet(TimePicker view, int hourOfDay, int minute) {// Do something with the time chosen by the user}}
查看
TimePickerDialog
类来了解更多关于该构造函数参数的信息
现在你所需要做的就是将这个fragment的实例添加到你的activity中。
展示时间选择器
一个例子,这里有一个按钮,当点击时,调用一个方法来显示该对话框:
<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/pick_time"android:onClick="showTimePickerDialog" />
当用户点击该按钮,系统调用了如下的方法:
public void showTimePickerDialog(View v) {DialogFragment newFragment = new TimePickerFragment();newFragment.show(getSupportFragmentManager(), "timePicker");}
警告:如果你的应用支持安卓3.0及其以下版本,确保你在调用
getSupportFragmentManager()
时获得了一个
FragmentManager
.的引用。也应该确保你展示该时间选择器的activity继承了
FragmentActivity而不是标准的
Activity
类。
创建日期选择器(Date Picker)
为使用
DialogFragment来展示一个
DatePickerDialog
,你需要定义一个继承自
DialogFragment
的
fragment类并且从fragment中的
onCreateDialog()方法中
返回一个
DatePickerDialog
注:如果你的应用支撑安卓3.0及更早的版本,确保你的工程中使用了安卓
support library
将DialogFragment 延伸为日期选择器(date picker)
- 定义一个
onCreateDialog()方法返回一个DatePickerDialog的引用
- 实现DatePickerDialog.OnDateSetListener接口来接收用户选择日期的事件
下面是个示例:
public static class DatePickerFragment extends DialogFragmentimplements DatePickerDialog.OnDateSetListener {@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {// Use the current date as the default date in the pickerfinal 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 itreturn 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}}
查看
DatePickerDialog类来
了解关于它构造函数参数的消息。
现在你只需要将这个fragment实例添加到你的activity中去了。
展示日期选择器
例如,这里有个按钮,当点击它时,调用一个方法来展示该对话框:
<Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/pick_date"android:onClick="showDatePickerDialog" />
当用户点击该按钮,系统调用如下方法:
public void showDatePickerDialog(View v) {DialogFragment newFragment = new DatePickerFragment();newFragment.show(getSupportFragmentManager(), "datePicker");}
警告:
如果你的应用支持安卓3.0及其以下版本,确保你在调用
getSupportFragmentManager()
时获得了一个
FragmentManager
.的引用。也应该确保你展示该时间选择器的activity继承了
FragmentActivity
而不是标准的
Activity
类。
使用DialogFragment创建时间与日期选择器
本文介绍如何利用Android中的DialogFragment来创建时间选择器(TimePickerDialog)和日期选择器(DatePickerDialog),适用于不同屏幕尺寸并确保良好的用户体验。
1390

被折叠的 条评论
为什么被折叠?



