您的位置:首页 > 移动开发 > Android开发

Android应用程序用户界面(十一)时间日期选择对话框

2015-09-20 13:14 441 查看
Android
以现成的对话框的形式提供了支持用户选择时间或日期的控件。每个选择对话框提供了设置时间的各部分(小时,分钟和秒,上午/下午)或者日期的各个部分(月,日和年)。使用这些对话框可以确保你的用户能够选择一个有效的、形式正确,符合用户地域的时间或日期。



我们建议你使用
DialogFragment
来包裹每一个时间或日期选择器。
DialogFragment
为你管理对话框的生命周期,允许你在不同的布局配置中显示这些对话框,例如在移动电话界面中的基本对话框,或者是更大的屏幕的布局文件的嵌入部分。

尽管
DialogFragment
Android 3.0(API 11)
才被加入,如果你的应用程序的支持版本低于
3.0
,甚至达到
1.6
,你都可以使用为向后兼容而提供的支持库中的
DialogFragment
类。

注意:下面的代码示例是显示如何使用支持库的
DialogFragment
创建时间选择对话框和日期选择对话框。如果你的应用程序的
minSdkVersion
是11或更高,你可以使用平台版本的
DialogFragment
类。


创建一个时间选择对话框

为了使用
DialogFragment
显示一个时间选择对话框,你需要定义一个继承自
DialogFragment
fragment
类,并在这个
fragment
onCreateDialog()
方法中返回
TimePickerDialog
的一个实例。

创建继承自
DialogFragment
的类

为了使用
DialogFragment
显示一个时间选择对话框,你必须:

定义
onCreateDialog()
方法,并返回一个
TimePickerDialog
的实例。

实现
TimePickerDialog.OnTimeSetListener()
接口以在用户设置时间时回调相应方法。

下面是一个例子:

public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// 使用当前时间作为时间选择对话框的默认值
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);

//创建时间选择对话框的新实例并返回它
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// 当用户选择时间时执行
}
}


现在你需要做的就是为你的活动添加这个
fragment
的实例。

显示时间选择对话框

一旦你向上面显示的那样定义了一个
DialogFragment
,你可以通过创建
DialogFragment
的实例并调用它的show()方法显示时间选择对话框。

例如,下面是一个按钮,当用户点击该按钮时,调用一个方法显示这个对话框。

<Button
android: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");
}


这个方法调用上面定义的
DialogFragment
的一个新实例的
show()
方法。
show()
方法需要一个
FragmentManager
的实例和为这个
fragment
指定的唯一的标签名。

小心:如果你的应用程序支持低于Android 3.0的版本,确保你调用getSupportFragmentManager()来获取FragmentManager的实例。也确保你的显示时间选择对话框的活动继承自FragmentActivity而不是标准的Activity类。

创建一个日期选择对话框

创建日期选择对话框和创建时间选择对话框一样。唯一的不同是你为
fragment
创建的对话框。

为了使用
DialogFragment
显示一个日期选择对话框,你需要定义一个继承自
DialogFragment
的类并且在这个
fragment
onCreateDialog()
方法中返回一个
DatePickerDialog
.

创建继承自
DialogFragment
的类

为了为日期选择对话框定义一个
DialogFragment
,你必须:

定义
onCreateDialog()
方法并返回
DatePickerDialog
的一个实例

实现
DatePickerDialog.OnDateSetListener
接口以在用户设置日期时调用相应方法。

下面是一个例子:

public static 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);
}

public void onDateSet(DatePicker view, int year, int month, int day) {
// 当用户设置日期时执行
}
}


显示日期选择对话框

下面是一个按钮,当用户点击时,调用显示日期选择对话框的方法:

<Button
android: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");
}


该方法调用上面定义的
DialogFragment
类的一个新实例的
show()
方法。该方法需要一个
FragmentManager
实例和为这个
fragment
指定的唯一的标签名。

原文

http://wear.techbrood.com/guide/topics/ui/controls/pickers.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: