2014-10-17 2 views
0

Iam Отображение AlertDialog на встряхивании устройства. Проблема в том, что когда я встряхиваю устройство, AlertDialog показывает дважды. Следовательно, если я отклоняю AlertDialog, верхняя часть будет отклонена, но после нее будет отображаться один за другим.AlertDialog, созданный несколько раз Android

Кроме того, Iam показывает тот же AlertDialog из другого раздела кода, где он отображается нажатием кнопки, который отлично работает.

Все это делается в ViewPager.

Как я могу избежать этого сценария?

Вот мой код: -

@Override 
public void onShake(float force) 
{ 
    // TODO Auto-generated method stub 


    showDialog(timeString, "Confirm ."); 
} 

public void showDialog(String timeString, String title) 
    { 

     builder = new AlertDialog.Builder(getActivity()); 

     builder.setTitle(title); 
     builder.setMessage("Reaching at:"+" "+ timeString+"?"); 

     builder.setNegativeButton("NO", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // Do nothing 

      } 
     }); 

     builder.setPositiveButton("YES", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface dialog, int which) 
      { 
       // Do nothing but close the dialog 

       new AddStatusTask().execute(); 

      } 

     }); 


     builder.show(); 
    } 
+0

где вы отклоняете свой диалог? – Piyush

+0

проверить, не отображается ли диалоговое окно, а затем показать его. Не – Meenal

+0

@iam stack Любой ответ, который сработал для вас? –

ответ

0

проверить, как этот

if (alertDialog != null && !alertDialog.isShowing()) { 
     //then show your dialog..else not 
    } 
0

Вместо builder.show();

использование

// create alert dialog 
alertDialog = builder.create(); 

// show it 
alertDialog.show(); 

и проверить здесь, как

@Override 
    public void onShake(float force) 
    { 
// TODO Auto-generated method stub 

if(alertDialog != null && !alertDialog.isShowing()){ 
showDialog(timeString, "Confirm ."); 

}}

+0

Спасибо за ваш ответ. Я попробовал ваш код. Но теперь AlertDialog вообще не отображается. Как я упоминал в вопросе, я показываю этот AlertDialog в фрагменте в ViewPager. –

0

Удалить строки alertDialog.show(); из метода showDialog (..) и используйте вот так.

@Override 
public void onShake(float force) 
{ 
// TODO Auto-generated method stub 
showDialog(timeString, "Confirm ."); 
if(alertDialog != null && !alertDialog.isShowing()){ 
    alertDialog.show(); 
} } 
+0

Это тоже не работает. Он по-прежнему дает тот же результат –

+0

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

Смежные вопросы