2013-08-23 22 views
3

出於某種奇怪的原因,當我在肯定按鈕單擊作爲DatePickerDialog的onDateSet法作爲DateSetListener的一部分的部分不被調用只有三星設備DatePickerDialog.OnDateSetListener沒有得到三星的設備回調

下面是我在做什麼:爲什麼這可能發生,將不勝感激

DateSetListener _datePickerDialogCallback = new DateSetListener(); 

DatePickerDialog _datePickerDialog = new DatePickerDialog(context, _datePickerDialogCallback, year, month, days); 
_datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, StringUtil.getString(R.string.command_ok), new DialogInterface.OnClickListener() { 

    public void onClick(DialogInterface arg0, int arg1) { 
     _done = true; 
    } 

    }); 

_datePickerDialog.show(); 



private class DateSetListener implements DatePickerDialog.OnDateSetListener { 

    public void onDateSet(DatePicker view, int year, int month, int day) { 

    Calendar calendar = Calendar.getInstance(); 
    calendar.set(year, month, day, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), 
     calendar.get(Calendar.SECOND)); 

    if (_done) { 
     _view.setText(formatDate(calendar.getTime())); 
    } 
    } 
} 

任何建議。請。注意,這僅適用於三星設備

+0

你使用自定義日期選擇器? – Hariharan

+0

我使用** ** DatePickerDialog **和** OnDateSetListener **,它在我的Samsung Galaxy S2(4.1.2)上沒有任何問題。 您正在使用哪個Android版本? – David

+0

檢查這個http://stackoverflow.com/questions/18211684/how-to-transfer-the-formatted-date-string-from-my-datepickerfragment/18212061#18212061鏈接中的第一個方法在samsun galaxy s3上測試 – Raghunandan

回答

6

它看起來從ICS和上面一樣,回調不必在定義datePickerDialog定義。但是,onPositiveButtonClick和onNegativeButtonClick必須調用回調函數。 這樣的東西:

_datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Ok", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface arg0, int arg1) { 
     _done = true; 
     DatePicker datePicker = _datePickerDialog.getDatePicker(); 
     _datePickerDialogCallback.onDateSet(datePicker, datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth()); 
     } 

    }); 
+0

再次感謝谷歌優秀的文檔。 –

2

我不知道,什麼是錯與您的代碼,但是這是我如何做它和它的作品在我的SG2(我沒有做的事情SET按鈕)

OnDataSetListener作爲一個內部類實現:

class DatePickHandler implements OnDateSetListener { 
    @Override 
    public void onDateSet(DatePicker view, int year, 
     int monthOfYear, int dayOfMonth) { 
     //do stuff 
     mDateDialog.hide(); 
    } 
} 

DatePickerDialog在我的應用程序

的片段創建0
mDateDialog = new DatePickerDialog(getActivity(), 
    new DatePickHandler(), mYear, mMonth, mDay); 

比我打開對話框編輯13年8月26日內部的的onClick()一個onClickListener()的方法

mDateDialog.show(); 

\

添加以下

mDateDialog.setButton(DialogInterface.BUTTON_POSITIVE, "test text", new 
    DialogInterface.OnClickListener() { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     Log.i("test", "in onclick"); 
}); 

這是它現在的樣子。按下「測試文本」按鈕後,我新創建的onClick方法被調用。

enter image description here

+0

嘿大衛。對你的迴應太多了。它是否與SetButton一起使用OnClickListener作爲其中的一部分? – lokoko

+0

我將它添加到上面的答案中。短版本:是的,沒有任何問題;) – David

+0

onClick()調用很好,但是您的OnDateSetListener回調會被調用嗎? – lokoko