fan*_*ana 1 android android-alertdialog
我从 MainActivity 触发 AlertDialog,它工作正常,如下所示:
public void showCustomAlert(String text){
final String alertText = text;
runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog.Builder myDialogBox = new AlertDialog.Builder(mContext);
myDialogBox.setTitle("Alert");
myDialogBox.setMessage(alertText);
myDialogBox.setCancelable(false);
myDialogBox.setPositiveButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
});
myDialogBox.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alertDialog = myDialogBox.create();
alertDialog.show();
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我在 MainActivity 之上打开另一个活动并再次触发 AlertBox 时,问题就出现了:它位于该活动的后面。当我关闭活动时,它就在那里:AlertDialog 正在显示。
如何让这个 AlertDialog 始终显示在顶部?
注意:此 AlertDialog 是由我的 MainActivity 上的推送通知侦听器触发的,而不是通过单击侦听器触发。
小智 5
这是上下文问题,因为对话框使用相同的活动上下文,如果该对话框必须始终位于顶部,则可以使用 SYSTEM_ALERT_SERVICE 来完成,例如
public void showCustomAlert(String text){
final String alertText = text;
runOnUiThread(new Runnable() {
@Override
public void run() {
AlertDialog.Builder myDialogBox = new AlertDialog.Builder(mContext);
myDialogBox.setTitle("Alert");
myDialogBox.setMessage(alertText);
myDialogBox.setCancelable(false);
myDialogBox.setPositiveButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
}
});
myDialogBox.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alertDialog = myDialogBox.create();
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.show();
}
});
}
Run Code Online (Sandbox Code Playgroud)
注意“android.permission.SYSTEM_ALERT_WINDOW”权限。希望这能解决您的问题。
| 归档时间: |
|
| 查看次数: |
8106 次 |
| 最近记录: |