資料取得上,除一般透過輸入的資料外,也常會使用到時間的紀錄。
而時間的取得就可以透過 TimePicker 或 DatePicker 來即時取的當下的時間。
當然這時間可以再另做設定,只是透過這樣的方法,使用者在輸入資料的時候。
可以避免資料的輸入手誤或錯誤等等。
範例:
而時間的取得就可以透過 TimePicker 或 DatePicker 來即時取的當下的時間。
當然這時間可以再另做設定,只是透過這樣的方法,使用者在輸入資料的時候。
可以避免資料的輸入手誤或錯誤等等。
範例:
軟體一開啟時,使用 Calendar 取得當下的年月日,並顯示在textDate1。
之後更改 Datepicker 顯示的年月日,系統會觸發 OnDateChangedListener,
之後更改 Datepicker 顯示的年月日,系統會觸發 OnDateChangedListener,
並產生出年月日三個數值是,由於這數值屬性為 int,所以我們另用 DateFix 方法將時間更改為 String。
當然若數字小於 10 ,在數字前面我們就多加個 0。
將取得字串在設定到 TextView1。
另外,透過Button取得 DatePicker 送出來的資料,顯示在另一個 另一個 textDate2 上。
將取得字串在設定到 TextView1。
另外,透過Button取得 DatePicker 送出來的資料,顯示在另一個 另一個 textDate2 上。
圖示:
main_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Date" >
<DatePicker
android:id="@+id/DatePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textData1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text" />
<Button
android:id="@+id/BtnGetDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="63dp"
android:text="取得日期" />
<TextView
android:id="@+id/textData2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text" />
</LinearLayout>
date.java
package com.data;
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
public class Date extends Activity {
String Year,Mon,Day;
private DatePicker DatePicker;
private TextView textData1;
private TextView textData2;
private Button BtnGetDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
Calendar TodayDate = Calendar.getInstance(); //透過Calendar取的資料
int sYear = TodayDate.get(Calendar.YEAR); //一開啟軟體即取得年的數值
int sMon = TodayDate.get(Calendar.MONTH) + 1; //一開啟軟體即取得月的數值
//月的起始是0,所以+1.
int sDay = TodayDate.get(Calendar.DAY_OF_MONTH);//一開啟軟體即取得日的數值
//將取得的數字轉成String.
Year = DateFix(sYear);
Mon = DateFix(sMon);
Day = DateFix(sDay);
textData1 = (TextView)findViewById(R.id.textData1);
textData2 = (TextView)findViewById(R.id.textData2);
BtnGetDate = (Button)findViewById(R.id.BtnGetDate);
//一開始就將年月日寫入 textDate1
textData1.setText( Year + "/" + Mon + "/" + Day );
BtnGetDate.setOnClickListener(GDListener);
DatePicker = (DatePicker)findViewById(R.id.DatePicker);
DatePicker.init(TodayDate.get(Calendar.YEAR),TodayDate.get(Calendar.MONTH),
TodayDate.get(Calendar.DAY_OF_MONTH),
//DatePicker年月日更改後,會觸發作以下的事情。
new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Year = DateFix(year);
Mon = DateFix(monthOfYear + 1); //月的初始是0,所以先加 1。
Day = DateFix(dayOfMonth);
textData1.setText( Year + "/"+Mon+"/"+Day);
}
});
}
//按下Button,將年月日的值,設定到 textData2
private Button.OnClickListener GDListener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
textData2.setText(Year+"/"+Mon+"/"+Day);
}
};
//方法DateFix:將傳送進來的年月日轉成String,在判斷是否前面需要加0。
private static String DateFix(int c){
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
}