在前台Android应用程序中如何显示AlertDialog?

在前台Android应用程序中如何显示AlertDialog?,android,android-alertdialog,Android,Android Alertdialog,我有一个程序负责在前台几秒钟后显示AlertDialog: ActivityManager am = (ActivityManager) getSystemServ(); if (am != null) { List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1); if (taskInfo != null && !taskInfo.

我有一个程序负责在前台几秒钟后显示AlertDialog:

    ActivityManager am = (ActivityManager) getSystemServ();
    if (am != null) {
        List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
        if (taskInfo != null && !taskInfo.isEmpty()) {
            if (taskInfo.get(0) != null && taskInfo.get(0).topActivity != null) {
                if (!MY_CLASS_NAME.equalsIgnoreCase(taskInfo.get(0).topActivity.getClassName())) {

                    new AlertDialog.Builder(this).setMessage("AAAAAAAAAAAAAAAAAAAAAAAAAAAA?")
                    .setTitle("Message").setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {                                

                        }  
                    })  
                    .setNegativeButton("No", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which){

                        }
                    }).show();                      
                }
            }
        }                       
    }       
ActivityManager am=(ActivityManager)getSystemServ();
如果(am!=null){
列表taskInfo=am.getRunningTasks(1);
if(taskInfo!=null&&!taskInfo.isEmpty()){
if(taskInfo.get(0)!=null&&taskInfo.get(0).topActivity!=null){
如果(!MY_CLASS_NAME.equalsIgnoreCase(taskInfo.get(0.topActivity.getClassName())){
新建AlertDialog.Builder(this.setMessage)(“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
.setTitle(“消息”).setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int其中){
}  
})  
.setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
}
}).show();
}
}
}                       
}       
但当应用程序转到前台时,AlertDialog没有显示!请帮帮我!谢谢

使用create()方法创建如下对话框:

new AlertDialog.Builder(this).setMessage("AAAAAAAAAAAAAAAAAAAAAAAAAAAA?")
                        .setTitle("Message").setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {                                

                        }  
                    })  
                    .setNegativeButton("No", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which){

                        }
                    }).create().show(); 

我刚修改了你的代码。请检查并更新您的代码段:

 ActivityManager am = (ActivityManager) getSystemServ();
if (am != null) {
    List< ActivityManager.RunningTaskInfo > taskInfo = am.getRunningTasks(1);
    if (taskInfo != null && !taskInfo.isEmpty()) {
        if (taskInfo.get(0) != null && taskInfo.get(0).topActivity != null) {
            if (!MY_CLASS_NAME.equalsIgnoreCase(taskInfo.get(0).topActivity.getClassName())) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setMessage("AAAAAAAAAAAAAAAAAAAAAAAAAAAA?")
                .setTitle("Message").setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {                                

                    }  
                })  
                .setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which){

                    }
                });             
    AlertDialog alert = builder.create();  
    alert.show();       
            }
        }
    }                       
} 
ActivityManager am=(ActivityManager)getSystemServ();
如果(am!=null){
列表taskInfo=am.getRunningTasks(1);
if(taskInfo!=null&&!taskInfo.isEmpty()){
if(taskInfo.get(0)!=null&&taskInfo.get(0).topActivity!=null){
如果(!MY_CLASS_NAME.equalsIgnoreCase(taskInfo.get(0.topActivity.getClassName())){
AlertDialog.Builder=新建AlertDialog.Builder(此);
builder.setMessage(“aaaaaaaaaaaaaaaaaaaaaaaa?”)
.setTitle(“消息”).setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int其中){
}  
})  
.setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
}
});             
AlertDialog alert=builder.create();
alert.show();
}
}
}                       
} 

您无法显示来自服务的对话框。相反,使用以对话框为主题的活动,将活动的主题(在清单中)设置如下:

android:theme="@android:style/Theme.Dialog"

另外,您不应该使用
TimerTask
,而是使用
Handler
,如下所示:

如果您只想显示AlertDialog而不设置其对AlertDialog对象的引用,那么您实际上不需要在
show()
之前调用
create()
。您可以直接调用
show()
弹出对话框您确定您的id else条件正确引导到AlertDialog吗?您是否可以记录任何消息以验证条件是否正常工作?您在哪里运行此代码?在活动或服务中?@alexanderblom在服务中:我有一个timerTask timer.scheduleAtFixedRate(新timerTask(){showAlertDialog();}@Waqas:我已经调试过,并且系统输出!它正确地引导到AlertDialog!我认为您不能从服务中显示AlertDialog,因为它需要引用您的活动的上下文。相反,您应该依赖可以使用应用程序的上下文显示的
Toast
弹出消息没有错误!只是仍然不能显示AlertDialog!如果应用程序在后台启动没关系,但前台不是你的意思是创建带有对话主题的新活动!并在前台应用程序时调用它?是的,这将按照你的意愿进行。你需要这样做,因为你无法从后台启动对话。谢谢你的帮助!我不能投票给你,因为我没有足够的声誉!)我们都是同龄人!:)不过,你应该能够接受答案,祝你有愉快的一天!
android:theme="@android:style/Theme.Dialog"