2014-11-21 1 views
0

Ниже мой код AlertDialog,Отменить AlertDialog в методе OnPause активности в Android

AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext); 
alertDialog.setTitle("GPS settings"); 
alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?"); 
alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int which) { 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     mContext.startActivity(intent); 
     } 
}); 

alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
     } 
    }); 
alertDialog.show(); 

@Override 
protected void onPause() { 
    super.onPause(); 
// I want dialog to be dismissed here 

} 

Сво работает нормально, но то, что я хочу, чтобы закрыть диалоговое окно в методе OnPause деятельности,
, как я могу достичь Это ?

+1

использование dialog.dismiss() function ... –

ответ

1

Используйте это в

alertDialogforGPS.dismiss(); 

EDIT:

AlertDialog.Builder builder; 

builder = new AlertDialog.Builder(WelcomeActivity.this).setTitle("Title") 
.setMessage("Message") 
.setPositiveButton("YES", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog,int which) { 
     //your code 
    } 
}) 
.setNegativeButton("NO", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
    } 
}); 
AlertDialog dialog = builder.create(); 
dialog.show(); 

И

dialog.dismiss(); 
+0

alertDialog.dismiss(); не доступно –

+0

@RajeshSuthar - ваш глобальный объект 'alertDialog'? – SilentKiller

+0

@SilentKiller: да, это глобально –

0

Попробуйте это ..

Объявите глобальную переменную ..

AlertDialog.Builder alertDialog; 

Определение и доступ к нему, когда вам это нужно.

alertDialog = new AlertDialog.Builder(mContext); 
alertDialog.setTitle("GPS settings"); 
alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?"); 
alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int which) { 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     dialog.dismiss(); // NOTE : dismiss dialog before moving to other activity.. it will prevent causing exception... 
     mContext.startActivity(intent); 
     } 
}); 

alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 
     } 
    }); 

доступа к переменной в других методах ..

@Override 
protected void onPause(){ 
    //checking for null variable 
    if(alertDialog != null) 
     alertDialog.dismiss(); 
    } 
} 
+0

Я хочу это только внутри метода onPause –

+1

, тогда сделайте общедоступную переменную .. так что вы можете получить к ней доступ в методе onPause() слишком –

+0

Убедитесь, что представление 'show':' if (this.alertDialog! = Null && this.alertDialog .isShowing()) '. –

0

Во-первых, вы должны сделать AlertDialog.Builder alertDialog членом вашего класса. Как:

private AlertDialog.Builder mAlertDialog; 

Затем, в точке, где вы определяете свой диалог предупреждения, можно использовать этот элемент:

mAlertDialog = new AlertDialog.Builder(mContext); 
mAlertDialog.setTitle("GPS settings"); 
mAlertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?"); 
mAlertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog,int which) { 
     Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     mContext.startActivity(intent); 
    } 
}); 

mAlertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.cancel(); 
    } 
}); 
mAlertDialog.show(); 

, а затем в методе onPause(), вы можете закрыть диалоговое окно.

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