2015年7月30日 星期四

如何使用DatePickerDialog

出處: http://givemepass.blogspot.tw/2011/11/datepickerdialog.html

如果你想要讓你的某個元件加入目前的日期,
可是如果使用EditText讓使用者填入時間,那真的是非常的麻煩,
而且使用者的格式也會出錯,
只要利用DatePickerDialog就可以避免以上的麻煩。



首先你先建立好一個Button跟一個TextView
XML如下:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
 android:layout_height="fill_parent" >

 <Button 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:text="Date" 
 android:id="@+id/dateButton" />
 <TextView 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:id="@+id/dateText" /> 
</LinearLayout>




接著你將一些資料初始化

private Button dateButton; 
 private Calendar calendar; 
 private int mYear, mMonth, mDay; 
 private TextView dateText; 
 private DatePickerDialog datePickerDialog; 

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main); 

 calendar = Calendar.getInstance(); 

 mYear = calendar.get(Calendar.YEAR); 
 mMonth = calendar.get(Calendar.MONTH);
 mDay = calendar.get(Calendar.DAY_OF_MONTH);
 dateText = (TextView)findViewById(R.id.dateText); 

 dateButton = (Button)findViewById(R.id.dateButton); 
 dateButton.setOnClickListener(new OnClickListener(){ 

 @Override
 public void onClick(View view) { 

 showDialog(0); 
 datePickerDialog.updateDate(mYear, mMonth, mDay); 
 }
 });
 }







然後在自己的Activity裡面overwrite onCreateDialog,
上面的showDialog方法就是呼叫我們建立的Dialog,

@Override
 protected Dialog onCreateDialog(int id) { 

datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
 
@Override
 public void onDateSet(DatePicker view, int year, int month, int day) { 
mYear = year; 
mMonth = month; 
mDay = day; 
dateText.setText("你設定的日期為"+setDateFormat(year,month,day));
 }
 }, mYear,mMonth, mDay); return datePickerDialog; }


onDateSet方法表示當你按下確定的時候, 就會跳進這個方法
因此我們將選取的時間全部存起來,
接著上面有多一個setDateFormat的方法,
這個方法是可以設置你想要設置的日期格式

private String setDateFormat(int year,int monthOfYear,int dayOfMonth){ 

return String.valueOf(year) + "-" + String.valueOf(monthOfYear + 1) + "-" + 

String.valueOf(dayOfMonth); }

這樣一來,你想要的日期就會變成 "年-月-日"的呈現方式在View上面

一開始你會看到這樣的畫面









當你按下Button就會跳出




















ps. 如果不想跳出DatePickerDialog的時候, 任選一個時間, 按下"取消", 系統記住你目前選的日期,只要在onClick方法裡面加上datePickerDialog.updateDate()這個方法 就可以即時更新時間了

@Override
 public void onClick(View view) { 

showDialog(0);
 datePickerDialog.updateDate(mYear, mMonth, mDay); 

}