2014-11-21 72 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()函數... – 2014-11-21 06:34:03

回答

1

使用這

alertDialogforGPS.dismiss(); 

編輯:

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();不可用 – 2014-11-21 06:49:25

+0

@RajeshSuthar是你的'alertDialog'對象全局? – SilentKiller 2014-11-21 06:51:30

+0

@SilentKiller:是全球性的 – 2014-11-21 07:00:00

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然後 – 2014-11-21 06:44:42

+1

做公共變量..這樣你們可以在onPause訪問它()方法太 – 2014-11-21 12:17:27

+0

確保看法是'showing':'如果(this.alertDialog = NULL && this.alertDialog! .isShowing())'。 – 2015-06-07 23:35:38

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