1. 程式人生 > >解決TimePickerDialog中onTimeSet和 DatePickerDialog中onDateSet執行兩次的問題

解決TimePickerDialog中onTimeSet和 DatePickerDialog中onDateSet執行兩次的問題

首先大家千萬別把Date寫成了Data  

  最近在寫Fragment的示例,在  new DatePickerDialog(getActivity(),
new OnDateSetListener() {


/**
* month java 0 --- 11 月來表示1月到12月
*/
@Override
public void onDateSet(DatePicker arg0,
int selectedYear, int selectedMonth,
int selectedDay) {
Toast.makeText(
getActivity(),
selectedYear + "年" + (selectedMonth + 1)
+ "月" + selectedDay + "日",
Toast.LENGTH_LONG).show();
/**
* Fragment 與Activity 之間的通訊,資料互動
*/
TextView txtResult = (TextView) getActivity()
.findViewById(R.id.text_dialog_result);
txtResult.setText(selectedYear + "年"
+ (selectedMonth + 1) + "月" + selectedDay
+ "日");
}
}, year, monthOfYear, dayOfMonth);

執行了兩次!!!!

網上一查,這是android4.1和4.2存在的一個bug,需要修改framework裡的DatePickerDialog.java原始檔,

大家只需寫一個子類繼承DatePickerDialog,然後在裡面重寫父類的onStop()方法。如:

protected void onStop() {
/**
* 註釋
*/
// super.onStop();
}

就可以了!!問題就解決了!