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