gpt4 book ai didi

Android AlertDialog 总是在最前面

转载 作者:行者123 更新时间:2023-11-29 19:22:42 26 4
gpt4 key购买 nike

我正在从我的 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();
}
});
}

当我在 MainActivity 之上打开另一个 Activity 并再次触发 AlertBox 时,问题就出现了:它落后于那个 Activity 。当我关闭该 Activity 时,它就在那里:正在显示 AlertDialog。

如何让 AlertDialog 始终显示在顶部?

注意:此 AlertDialog 是由我的 MainActivity 上的推送通知监听器触发的,而不是由点击监听器触发的。

最佳答案

这是上下文问题,因为对话框使用相同的 Activity 上下文,如果此对话框必须始终位于顶部,可以使用 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();
}
});
}

注意“android.permission.SYSTEM_ALERT_WINDOW”权限。希望这能解决您的问题。

关于Android AlertDialog 总是在最前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42058900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com