2013-07-01 10 views
5

TimePickerDialogonTimeSet()メソッドを使用します。 cancelボタンをonClickListenerと追加しました。
私の問題は、cancelボタンをクリックすると、onTimeSet()メソッドが呼び出されるということです。それはなぜです?この問題を解決する方法はありますか?TimePickerDialog:「キャンセル」ボタンをクリックすると、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(); 
     } 
}); 

私はonClickListenerpositiveボタンを設定することで試みたが、その場合には、私は、ユーザーが選択した時間を取得できませんでした。もし誰かがonClickListenerの時間を得る方法を教えてくれたら、私の問題も解決するでしょう。

+1

まず、onClickメソッドを入力し、次にonTimeSetを入力します。したがって、boolean変数を使用して 'onClick'メソッドに入ったかどうかを確認してください。そして、それはしなかった、 'onTimeSet'メソッドでコードを実行しないでください。 – Geek

+0

ここで実行中の解決策を見つけてください:https://stackoverflow.com/questions/4724781/timepickerdialog-cancel-button/47043247#47043247 – Deepti

答えて

1

DatePickerDialogとTimePickerDialogに問題があります(問題#34833)。この問題を解決するには、回避策としてカウンタを使用できます。 Pls。参照先:Date Picker with cancel option in android

+0

カウンタは問題を解決しません。 – Geek

+0

34833に記載されている問題を確認しましたか? – lokoko

+0

実行中のソリューションはこちらからご覧ください:https://stackoverflow.com/questions/4724781/timepickerdialog-cancel-button/47043247#47043247 – Deepti

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; 
    } 

魅力的な作品です。

+0

私は 'DialogFragment'を拡張しません。 'onCreateDialog'メソッドは動作しますか? 'TIME_DIALOG_ID'はあなたの変数か、SDKで宣言されていますか? – Geek

+0

それはあなたによって宣言されているのですか、それとも既にSDKで宣言されていますか? – Geek

+0

それはsdkのinbuilt宣言ですので、何が問題なのですか? – Harshid

関連する問題