Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查警报对话框的可见性?_Java_Android - Fatal编程技术网

Java 如何检查警报对话框的可见性?

Java 如何检查警报对话框的可见性?,java,android,Java,Android,我想检查警报对话框是否可见。在大多数帖子中,我看到他们使用了isShowing,但现在似乎无法描述 当用户单击信息文本视图时,我暂停音乐。如果用户关闭警报对话框,音乐将再次播放 info_Button.setClickable(true); info_Button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {

我想检查警报对话框是否可见。在大多数帖子中,我看到他们使用了isShowing,但现在似乎无法描述

当用户单击信息文本视图时,我暂停音乐。如果用户关闭警报对话框,音乐将再次播放

info_Button.setClickable(true);
    info_Button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mediaControl.pause();
            AlertDialog.Builder playstopbutton_builder = new AlertDialog.Builder(exercise_arm_triceps_execute.this);
            playstopbutton_builder.setTitle("WARNING").setMessage("Please get warm before exercising!");
            playstopbutton_builder.create().show();
            playstopbutton_builder.setCancelable(false);

            //if alert dialog is visible keep music paused
            //else if mediaControl.start();

        }
    });

您可能需要将OnDismissListener添加到playstopbutton_生成器:

        playstopbutton_builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {
            mediaControl.start();
        }
    });
这样,当用户关闭警报对话框时,音乐将再次开始播放

info_Button.setClickable(true);
    info_Button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mediaControl.pause();
            AlertDialog.Builder playstopbutton_builder = new AlertDialog.Builder(exercise_arm_triceps_execute.this);
            playstopbutton_builder.setTitle("WARNING").setMessage("Please get warm before exercising!");
            playstopbutton_builder.create().show();
            playstopbutton_builder.setCancelable(false);

            //if alert dialog is visible keep music paused
            //else if mediaControl.start();

        }
    });
编辑:如果不需要OnDismissListener方法,那么类似这样的方法可能会更好:

public void infoClickHandler(View v) {
    mediaControl.pause();

    AlertDialog.Builder b = new AlertDialog.Builder(this);
    b.setMessage("restart the music?");
    b.setPositiveButton("ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            mediaControl.start();
        }
    });
    b.show();
}
编辑2:另一方面,如果对话框不能有正按钮或负按钮,并且您不想将Cancelable设置为false,则此操作似乎有效:

public void infoClickHandler(View v) {
    mediaControl.pause();

    AlertDialog.Builder b = new AlertDialog.Builder(this);
    b.setMessage("restart the music?");
    b.setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {
            if (!mediaControl.isPlaying()) {
                mediaControl.start();
            }
        }
    });
    b.show();
}

当用户在对话框外单击时,将调用OnDismissListener。

您可能需要将OnDismissListener添加到playstopbutton\u生成器中:

        playstopbutton_builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {
            mediaControl.start();
        }
    });
这样,当用户关闭警报对话框时,音乐将再次开始播放

info_Button.setClickable(true);
    info_Button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mediaControl.pause();
            AlertDialog.Builder playstopbutton_builder = new AlertDialog.Builder(exercise_arm_triceps_execute.this);
            playstopbutton_builder.setTitle("WARNING").setMessage("Please get warm before exercising!");
            playstopbutton_builder.create().show();
            playstopbutton_builder.setCancelable(false);

            //if alert dialog is visible keep music paused
            //else if mediaControl.start();

        }
    });
编辑:如果不需要OnDismissListener方法,那么类似这样的方法可能会更好:

public void infoClickHandler(View v) {
    mediaControl.pause();

    AlertDialog.Builder b = new AlertDialog.Builder(this);
    b.setMessage("restart the music?");
    b.setPositiveButton("ok", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            mediaControl.start();
        }
    });
    b.show();
}
编辑2:另一方面,如果对话框不能有正按钮或负按钮,并且您不想将Cancelable设置为false,则此操作似乎有效:

public void infoClickHandler(View v) {
    mediaControl.pause();

    AlertDialog.Builder b = new AlertDialog.Builder(this);
    b.setMessage("restart the music?");
    b.setOnDismissListener(new DialogInterface.OnDismissListener() {
        @Override
        public void onDismiss(DialogInterface dialog) {
            if (!mediaControl.isPlaying()) {
                mediaControl.start();
            }
        }
    });
    b.show();
}

当用户在对话框外单击时,将调用OnDismissListener。

由于您将Cancelable设置为false,因此可能需要使用

对于正面按钮,说“好吧”

playstopbutton_builder.setPositiveButton(positiveBtnText,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    //resume ur media player here
                }
            })
对于负面按钮,如取消

playstopbutton_builder.setNegativeButton(negativeBtnText,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    //resume ur media player here
                }
            })
所以它看起来是这样的

info_Button.setClickable(true);
info_Button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        mediaControl.pause();
        AlertDialog.Builder playstopbutton_builder = new AlertDialog.Builder(exercise_arm_triceps_execute.this);
        playstopbutton_builder.setTitle("WARNING").setMessage("Please get warm before exercising!");
        playstopbutton_builder.create().show();
        playstopbutton_builder.setCancelable(false);
playstopbutton_builder.setPositiveButton(positiveBtnText,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    //resume ur media player here
                }
            });
playstopbutton_builder.setNegativeButton(negativeBtnText,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    //resume ur media player here
                }
            });
    }
});

由于已将Cancelable设置为false,因此可能需要使用

对于正面按钮,说“好吧”

playstopbutton_builder.setPositiveButton(positiveBtnText,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    //resume ur media player here
                }
            })
对于负面按钮,如取消

playstopbutton_builder.setNegativeButton(negativeBtnText,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    //resume ur media player here
                }
            })
所以它看起来是这样的

info_Button.setClickable(true);
info_Button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        mediaControl.pause();
        AlertDialog.Builder playstopbutton_builder = new AlertDialog.Builder(exercise_arm_triceps_execute.this);
        playstopbutton_builder.setTitle("WARNING").setMessage("Please get warm before exercising!");
        playstopbutton_builder.create().show();
        playstopbutton_builder.setCancelable(false);
playstopbutton_builder.setPositiveButton(positiveBtnText,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    //resume ur media player here
                }
            });
playstopbutton_builder.setNegativeButton(negativeBtnText,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    //resume ur media player here
                }
            });
    }
});

您需要检查dialog show(对话框显示)是否像这样更改代码

info_Button.setClickable(true); 
    info_Button.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) {
            mediaControl.pause(); 
            AlertDialog.Builder playstopbutton_builder = new AlertDialog.Builder(exercise_arm_triceps_execute.this);
            playstopbutton_builder.setTitle("WARNING").setMessage("Please get warm before exercising!");
            playstopbutton_builder.create();
            playstopbutton_builder.setCancelable(false);

            //if alert dialog is visible keep music paused 
            //else if mediaControl.start(); 

            if(!playstopbutton_builder.isShowing()){ 

  //if its visibility is not showing then show here 

                  playstopbutton_builder.show();  

             }else{ 

  //do something here... if already showing 

             } 

        } 
    });

您需要检查dialog show(对话框显示)是否像这样更改代码

info_Button.setClickable(true); 
    info_Button.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) {
            mediaControl.pause(); 
            AlertDialog.Builder playstopbutton_builder = new AlertDialog.Builder(exercise_arm_triceps_execute.this);
            playstopbutton_builder.setTitle("WARNING").setMessage("Please get warm before exercising!");
            playstopbutton_builder.create();
            playstopbutton_builder.setCancelable(false);

            //if alert dialog is visible keep music paused 
            //else if mediaControl.start(); 

            if(!playstopbutton_builder.isShowing()){ 

  //if its visibility is not showing then show here 

                  playstopbutton_builder.show();  

             }else{ 

  //do something here... if already showing 

             } 

        } 
    });

我把它放在“info_Button.setOnClickListener”中,但没有恢复声音。谢谢Albert,但当我让另一位朋友难过时,我不应该在这个警报对话框中添加积极的消极按钮。我需要检查用户是否单击了周围的某个地方或后退按钮。检测后退按钮是正常的,但警报对话框的周围呢?顺便说一句,我删除了setcancelable。我将它放在“info_Button.setOnClickListener”中,但没有恢复声音。谢谢Albert,但当我让另一位朋友难过时,我不应该在这个警报对话框中添加正负按钮。我需要检查用户是否单击了周围的某个地方或后退按钮。检测后退按钮是正常的,但警报对话框的周围呢?顺便说一句,我删除了setcancelable。谢谢,但它说“isShowing”的“无法解析方法”。我和你一样把它放好了。另外,在这个问题上,我很难过我对iShowing有问题。谢谢,但它说“无法解决方法”为“iShowing”。我和你一样把它放好了。另外,在这个问题上,我很抱歉我在显示上有问题。您好,我不应该在警报对话框中添加正负按钮。我的警报对话框只是提供信息。当用户看到它时,音乐将被暂停(我用alertdialog.setonclicklistener完成了这部分),但若用户单击周围的某个地方或后退按钮。我希望它能恢复。(顺便说一句,我删除了setcancelable(在这种情况下,您可能必须删除setcancelable(false),并按照其他人的建议使用dismislistener,希望有帮助:)我使用了这个,但没有帮助playstopbutton_builder.setOnDismissListener(新的DialogInterface.OnDismissListener(){@Override public void onDismiss(DialogInterface dialog){mediaControl.start();}});您是否尝试过调试,当代码按ctrl键运行时,检查您是否收到对onDismiss methodHello的回电,我不应该在警报对话框中添加正负按钮。我的警报对话框仅用于提供信息。当用户看到它时,音乐将暂停(我使用alertdialog.setonclicklistener完成了这部分),但如果用户单击周围的某个位置或“后退”按钮,我希望它可以恢复。(顺便说一句,我删除了setcancelable(在这种情况下,您可能必须删除setcancelable(false),并按照其他人的建议使用dismislistener,希望有帮助:)我使用了这个,但没有帮助playstopbutton_builder.setOnDismissListener(新建DialogInterface.OnDismissListener(){@Override public void onDismiss(DialogInterface dialog){mediaControl.start();}});是否尝试调试,在代码ctrl运行时,检查是否收到对onDismiss方法的回调