2014-02-05 1 views
1

Я хочу отклонить мой предупреждающий ящик из моего метода onPause(), потому что я проверяю подключение к Интернету, и если нет соединения, я показываю предупреждающее поле, в котором не говорится о соединении. Но когда я свожу к минимуму приложение и перезапускаю его, появляется предыдущее окно с предупреждением, так что в общей сложности будет два предупреждения. Я хочу избежать этого. Поэтому, если я отклоняю его в методе onPause(), второй не будет подойти.Как снять оповещение?

Может ли кто-нибудь помочь мне в этом, спасибо.

if (!haveNetworkConnection) { 
      // Toast.makeText(getApplicationContext(), "No Connection", 
      // Toast.LENGTH_SHORT).show(); 
      advtlayout.setVisibility(View.GONE); 
      System.out.println("no network"); 
      showGraphOverlay(); 
      hideOutputTextView(); 
      hideProgressBar(); 
      AlertDialog.Builder alertDialog = new AlertDialog.Builder(
        InterPreterWithAnimation.this); 

      // Setting Dialog Title 
      alertDialog.setTitle("No Network"); 

      // Setting Dialog Message 
      alertDialog.setMessage("Turn on Wifi or Mobile data"); 

      // Setting Icon to Dialog 
      // alertDialog.setIcon(R.drawable.); 

      // Setting Positive "Yes" Button 
      alertDialog.setPositiveButton("Settings", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, 
           int which) { 

          // Write your code here to invoke YES event 

          InterPreterWithAnimation.this 
            .startActivity(new Intent(
              Settings.ACTION_SETTINGS)); 

         } 
        }); 

      // Setting Negative "NO" Button 
      alertDialog.setNegativeButton("Ok", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, 
           int which) { 
          // Write your code here to invoke NO event 
          dialog.cancel(); 
         } 
        }); 

      // Showing Alert Message 
      alertDialog.show(); 
+0

Показать ваш код .. –

+0

использование диалог, отмена() способ. – Kishan

+0

Попробуйте этот путь 'if (dialog.isShowing()) dialog.dismiss();' –

ответ

1

Попробуйте создать AlertDialog таким образом:

 AlertDialog.Builder mAlertDialogBuilder = new Builder(mContext); 
     mAlertDialogBuilder.setTitle("Your title here..."); 
     mAlertDialogBuilder.setMessage("Your message here..."); 
     mAlertDialogBuilder.setPositiveButton("Ok", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface arg0, int arg1) { 

        } 
       }); 

     mAlertDialog = mAlertDialogBuilder.create(); 
     mAlertDialog.show(); 

Затем, вы можете отклонить внутри onPause() как:

if(mAlertDialog.isShowing()) 
{ 
    mAlertDialog.dismiss(); 
} 

Также объявите переменную AlertDialog в качестве члена вашего класса.

+0

Метод create() не определен для типа mAlertDialogBuilder, как показано на рисунке; –

+0

@sunilsunny вы уверены? Вы написали это «AlertDialog.Builder mAlertDialogBuilder = new Builder (mContext)», поскольку это код, который я использую в настоящее время. –

+0

На самом деле у меня есть сомнения, что это переменная mAlertDialog private AlertDialog mAlertDialog; Я объявил это глобально. Прошу, я новичок в Android, поэтому ... –

1

Создание глобального объекта AlertDialog, а затем вызвать dialog.dismiss() в onPause() метод, если диалог уже показывает

+0

Я уже пробовал. –

2

Первый определяется AlertDialog.Builder builder Глобально и попытаться проверить dialog объект dialog!=null в onPause(), а затем

if (dialog.isShowing()) { 
dialog.dismiss(); 
} 
+0

Прошел ли ты через мой код ..? Я использую AlertDialog.Builder. –

+0

определяется 'final AlertDialog.Builder alertDialog' Глобально и попробуйте. –

+0

Его отображение ошибки на самом деле этот диалог является переменной DialogInterface право? –

0

Создать переменную экземпляра в классе

private AlertDialog alertDialog; 

А затем используйте следующий код для отображения предупреждения.

alertDialog = AlertDialog.Builder(MyActivity.this) 
    .setTitle("Title"); 
    .setMessage("Message") 
[...] 
    .show(); 

Тогда в OnPause вы можете отклонить alertDialog, используя следующий код:

@Override 
protected void onPause() { 
    super.onPause(); 
    if (alertDialog != null) { 
     alertDialog.dismiss(); 
    } 
} 
+0

alertDialog.dismiss(); показывает ошибку. Это предупреждениеDialog является объектом AlertDialog.Builder, и я думаю, что увольнение недоступно, так как доступно только шоу. –

+0

Проверьте отредактированный ответ. –

+0

Метод Builder (MyActivity) не определен для типа AlertDialog, показывающего эту ошибку. –

0

Первое: создать AlertDialog экземпляр, так что он может получить доступ из любой точки в этом классе, как следует ...

private AlertDialog mNetworkConnectionDialog = null; 

@Override 
    protected void onCreateActivity(Bundle savedInstanceState){ 

Второе: вы не ставили @Override обозначения перед тем сверхуClick способ. И вместо alertDialog.show(); вы должны передать свой alertDialog к mNetworkConnectionDialog путем создания следующим ...

mNetworkConnectionDialog = alertDialog.create(); 

Вместо передачи InterPreterWithAnimation.this в AlertDialog.Builder конструктор можно передать только это. Здесь я даю исправленную версию кода ...

if (!haveNetworkConnection) { 
    // Toast.makeText(getApplicationContext(), "No Connection", 
    // Toast.LENGTH_SHORT).show(); 
    advtlayout.setVisibility(View.GONE); 
    System.out.println("no network"); 
    showGraphOverlay(); 
    hideOutputTextView(); 
    hideProgressBar(); 

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(
      InterPreterWithAnimation.this); 

    // Setting Dialog Title 
    alertDialog.setTitle("No Network"); 

    // Setting Dialog Message 
    alertDialog.setMessage("Turn on Wifi or Mobile data"); 

    // Setting Icon to Dialog 
    // alertDialog.setIcon(R.drawable.); 

    // Setting Positive "Yes" Button 
    alertDialog.setPositiveButton("Settings", 
      new DialogInterface.OnClickListener() { 

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

        // Write your code here to invoke YES event 

        InterPreterWithAnimation.this.startActivity(new Intent(
              Settings.ACTION_SETTINGS)); 

        dialog.dismiss(); 
       } 
      }); 

    // Setting Negative "NO" Button 
    alertDialog.setNegativeButton("Ok", 
      new DialogInterface.OnClickListener() { 

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

        // Write your code here to invoke NO event 
        dialog.dismiss(); 
       } 
      }); 


    // Showing Alert Message 
    mNetworkConnectionDialog = alertDialog.create(); 
    mNetworkConnectionDialog.show(); 
} 

Третье: Так как вы хотите отклонить ваш диалог, когда OnPause метод называется, то вы должны написать mNetworkConnectionDialog.dismiss(); следующим образом ...

@Override 
protected void onPause() { 
    if (mNetworkConnectionDialog != null) { 
     mNetworkConnectionDialog.dismiss(); 
    } 
}