2012年7月5日 星期四

Android:利用XML中Button按鈕屬性直接處理按鈕事件,TimePickerDialog與DatePickerDialog用法





XML Layout


  <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
 <!--- 兩個Button建立onClick屬性,其值設定相同 -->
        android:onClick="butonclick"
        android:text="日期" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="butonclick"
        android:text="時間" />


SourceCode



package com.wu;


import java.util.Calendar;
import java.util.Locale;


import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;


public class DateActivity extends Activity {
/** Called when the activity is first created. */
Calendar bcal = Calendar.getInstance();
TextView tex;
String meg = "";


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


tex = (TextView) findViewById(R.id.textView1);
}


@SuppressWarnings("deprecation")
// 使用方法中自帶的參數v並呼叫getId()來判斷user按下哪一個按鈕
public void butonclick(View v) {
switch (v.getId()) {
case R.id.button1:
// 此方法與底下onCreateDialog(int id)配合以建立出Dialog
showDialog(0);
break;
case R.id.button2:
showDialog(1);
break;
}


}


@SuppressWarnings("deprecation")
@Override
// 從eclipse中直接選取此方法,利用方法自帶的參數id來判斷執行哪段程式
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
switch (id) {
case 0:
DatePickerDialog date = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
// int year,int month, int day代表使用者選取之年 月 日


public void onDateSet(DatePicker arg0, int year,
int month, int day) {
// TODO Auto-generated method stub
Calendar cal = Calendar.getInstance();
cal.set(year, month, day);
//值得注意的是,系統取出的month會是從0開始,因此輸出時必須+1
meg = String.format("%d年%d月%d日", year, month + 1,
day);
meg += cal.getDisplayName(Calendar.DAY_OF_WEEK,
Calendar.LONG, Locale.TAIWAN);
tex.setText(meg);
}


}, bcal.get(Calendar.YEAR), bcal.get(Calendar.MONTH),
bcal.get(Calendar.DAY_OF_MONTH));
//必須return一個Dialog或是其子類別物件
return date;


case 1:
TimePickerDialog tim = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
                        //hourOfDa,minute代表使用者所選取之小時與分鐘
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
// TODO Auto-generated method stub
meg += String.format("%n選取時間為%d分%d秒", hourOfDay,
minute);
tex.setText(meg);


}
},


bcal.get(Calendar.HOUR_OF_DAY), bcal.get(Calendar.MINUTE),
false);
return tim;
}
return super.onCreateDialog(id);
}
}

沒有留言:

張貼留言