2015-04-03 1 views
0

я создать диалог в моем onCreate метод в моей нормальной деятельности:диалог и кнопка DatePicker => нажмите дважды, чтобы открыть

datePicker = new DatePickerDialog(this, this, cal.get(YEAR), 
        cal.get(MONTH), cal.get(DAY_OF_MONTH)); 

тогда я называю кнопку слушателя:

Button button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       datePicker.show(); 
       Log.e("tag", "Passage dans le click"); 

      } 
     }); 

при отмене = >

  1. Когда я нажимаю эту кнопку один раз, отображается датапикер.
  2. я нажимаю отменить в диалоговом
  3. я нажмите на кнопку второй раз, DatePicker показывая

при OK =>

  1. когда я нажмите на эту кнопку один раз, DatePicker показ ,
  2. я нажмите OK в диалоговом
  3. я нажмите на кнопку второй раз, DatePicker НЕ показывая

Howewer если я пишу дважды Datepicker.show(), что работа:

Button button = (Button) findViewById(R.id.button); 
      button.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        datePicker.show(); 
        datePicker.show(); 
        Log.e("tag", "Passage dans le click"); 

       } 
      }); 

ответ

0

вы можете попробовать ниже кода ... Объект диалога каждый раз создается, и он будет отображаться каждый раз. надеюсь, что это сработает.

Button button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 

     datePicker = new DatePickerDialog(this, this, cal.get(YEAR), cal.get(MONTH), cal.get(DAY_OF_MONTH)); 

       datePicker.show(); 
       Log.e("tag", "Passage dans le click"); 

      } 
     }); 
+0

Да, спасибо, что отлично работает, Howewer я объявляю дважды Datepicker = новый DatePickerDialog (...), в OnCreate (мне это нужно, чтобы показать диалоговое окно при создании) и в слушателе. – Ng1Chuck

+0

приветствую моего друга @ Ng1Чак вы можете проголосовать, это поможет вам. –

+0

Да, для этого вы можете создать несколько диалоговых окон, а также их объект и несколько прослушивателей, чтобы вы могли легко справиться с этим, было бы полезно, если вы тоже проголосуете за ответ. –

0

Это может быть связано с какой-то «тяжелой» работой над обратным вызовом onDateSet (...). Попробуйте использовать это:

button.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      new Handler().postDelayed(new Runnable() { 

       @Override 
       public void run() { 
        datePicker.show(); 

       } 
      }, 300); 
     } 
    }); 
+0

Нет, спасибо, но это не работает, когда я нажимаю ok на Диалог Datepicker - это похоже на то, что программа чего-то ждала. – Ng1Chuck