5

メソッドで使用TimePickerDialogonTimeSet()ます。cancelのボタンを追加しましたonClickListener
私の問題は、cancelボタンをクリックすると onTimeSet() メソッドが呼び出されることです。それはなぜです?この問題を解決する方法はありますか?

// Create timePicker and set listener
timeListener = new TimePickerDialog.OnTimeSetListener() {

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {


        };

    timePicker = new TimePickerDialog(RS_CreateTripActivity.this,
                timeListener, hour, min, false);
    timePicker.setCanceledOnTouchOutside(false);
    timePicker.setCancelable(false);

    // Set negative button click listener
    timePicker.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
                new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
                        datePicker.dismiss();
        }
});

positiveでボタンを設定してみましonClickListenerたが、その場合、ユーザーが選択した時間を取得できませんでした。内で時間を取得する方法を教えてくれればonClickListener、私の問題も解決します。

4

2 に答える 2

2

このように使用する必要があります。

private TimePickerDialog.OnTimeSetListener mTimeSetListener =
            new TimePickerDialog.OnTimeSetListener() {
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    mHour = hourOfDay;
                    mMinute = minute;
                    time = ""+mHour+":"+mMinute;

           }
    };



@Override
   protected Dialog onCreateDialog(int id) {
        switch (id) {
        case TIME_DIALOG_ID:
            TimePickerDialog myTime = new TimePickerDialog(this,mTimeSetListener, h, m, false);
            myTime(new DialogInterface.OnCancelListener(){
            @Override
            public void onCancel(DialogInterface arg0) {
                //your cancel task.
            }
            );//For cancel button

        return myTime; //Return the dialog
        break;
        return null;
    }

それは仕事のような魅力です。

于 2013-07-01T06:31:11.900 に答える
1

DatePickerDialog と TimePickerDialog に問題があります (問題 #34833)。この問題を回避するための回避策としてカウンターを使用できます。お願いします。参照:アンドロイドのキャンセルオプション付き日付ピッカー

于 2013-07-01T07:34:16.550 に答える