Android SDK Tutorials系列 - Hello Views - Date Picker
2011-11-13 20:10
447 查看
Date Picker
可以用DatePicker窗口小部件来选择日期,用户可以选择年月日。本教程里,你将创建一个DatePickerDialog对话框,点击按钮会弹出一个悬浮的日期选择器对话框。当用户设置日期以后,一个TextView会显示刚设置的日期。
创建一个工程:HelloDatePicker.
打开
res/layout/main.xml并修改如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/dateDisplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=""/> <Button android:id="@+id/pickDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Change the date"/> </LinearLayout>
采用LinearLayout布局,里面用一个TextView来显示日期,和一个Button,点击它会打开DatePickerDialog对话框。
打开
HelloDatePicker.java,添加下列成员变量:
private TextView mDateDisplay; private Button mPickDate; private int mYear; private int mMonth; private int mDay; static final int DATE_DIALOG_ID = 0;
第一组变量定义了界面里的View(TextView、Button)以及日期的年月日。静态整数
DATE_DIALOG_ID是Dialog的ID,用来创建日期选择器。
修改
onCreate()方法如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // capture our View elements mDateDisplay = (TextView) findViewById(R.id.dateDisplay); mPickDate = (Button) findViewById(R.id.pickDate); // add a click listener to the button mPickDate.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showDialog(DATE_DIALOG_ID); } }); // get the current date final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); // display the current date (this method is below) updateDisplay(); }
首先,加载main.xml布局文件。然后使用findViewById(int)来引用TextView和Button。
然后为Button设置一个
View.OnClickListener点击事件监听器,当Button被点击后,showDialog(int)方法会被调用,该方法创建一个ID为DATE_DIALOG_ID的日期选择器对话框。
showDialog(int)方法让当前Activity管理对话框的生命周期,同时调用
onCreateDialog(int)(将在下一步定义)回调函数显示对话框。
在设置点击事件监听器以后,创建一个Calendar对象,读取当前年、月、日。最后,调用
updateDisplay()方法,让TextView显示当前日期。
定义
updateDisplay()方法:
// updates the date in the TextView private void updateDisplay() { mDateDisplay.setText( new StringBuilder() // Month is 0 based so add 1 .append(mMonth + 1).append("-") .append(mDay).append("-") .append(mYear).append(" ")); }
这个方法用成员变量年月日的值设置TextView的显示内容;
mDateDisplay, 也在前面声明和初始化过了。
创建一个新的成员变量
DatePickerDialog.OnDateSetListener并初始化:
// the callback received when the user "sets" the date in the dialog private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; updateDisplay(); } };
DatePickerDialog.OnDateSetListener监听用户设置时间操作(用户点击“Set”("设置")按钮)。点击"Set"以后,
onDateSet()方法会被调用来更新
mYear,
mMonth,
和
mDay的值,并调用updateDisplay()方法来更新TextView的显示内容。
现在添加
onCreateDialog(int)回调函数:
@Override protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); } return null; }
这是一个Activity回调函数,传递给它的整型ID来自
showDialog(int)方法(这个方法在按钮的View.OnClickListener监听器里被调用)的参数。当这个ID满足switch条件时,会使用按钮点击事件监听器View.OnClickListener(前面步骤里创建的)、年月日成员变量(用来初始化时间选择器窗口小部件的显示日期)来实例化一个DatePickerDialog (日期选择器对话框)。
运行应用。
当你按下"Change the date"(“更改日期”)按钮,会看到以下画面:
返回 Android
SDK Tutorials系列 - Hello Views
转载请注明出处:/article/11130785.html
相关文章推荐
- Android SDK Tutorials系列 - Hello Views - Web View
- Android SDK Tutorials系列 - Hello Views - Grid View
- Android SDK Tutorials系列 - Hello Views - Table Layout
- Android SDK Tutorials系列 - Hello Views - Gallery
- Android SDK Tutorials系列 - Hello Views - Relative Layout
- Android SDK Tutorials系列 - Hello Views - Form Stuff
- Android SDK Tutorials系列 - Hello Views - List View
- Android SDK Tutorials系列 - Hello Views - Linear Layout
- [译文]Hello Views - Android SDK Tutorials系列
- Android SDK Tutorials系列 - Hello Views - Time Picker
- [译文]Time Picker - Android SDK Tutorials系列
- [译文]Notepad Exercise 1 – Android SDK Tutorials系列
- Android SDK Tutorials系列 - Hello Views - Spinner
- [译文]Form Stuff - Android SDK Tutorials系列
- [译文]Spinner - Android SDK Tutorials系列
- Android SDK Tutorials系列 - Hello Views - Auto Complete
- Android SDK Tutorials系列 - Hello Views - Tab Layout
- Android SDK Tutorials系列 - Hello Views - Google Map View
- [译文]Auto Complete - Android SDK Tutorials系列
- [译文]Gallery - Android SDK Tutorials系列