Android 关闭进度对话框失败
我试图在几秒钟后关闭一个Android 关闭进度对话框失败,android,progressdialog,Android,Progressdialog,我试图在几秒钟后关闭一个ProgressDialog(仅视觉主题),但没有成功。要关闭对话框,我希望单击Enter键,但即使在事件中单击完成,对话框也始终可见。以下是我正在使用的代码: lectura.setOnKeyListener(new OnKeyListener() { public boolean onKey(View view, int keyCode, KeyEvent keyevent) { if(pDialog == null) { pD
ProgressDialog
(仅视觉主题),但没有成功。要关闭对话框,我希望单击Enter键,但即使在事件中单击完成,对话框也始终可见。以下是我正在使用的代码:
lectura.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View view, int keyCode, KeyEvent keyevent) {
if(pDialog == null) {
pDialog = new ProgressDialog(ValidacionBlueTooth.this);
pDialog.setMessage("Sincronizando...");
pDialog.setCancelable(false);
pDialog.show();
}
if ((keyevent.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
if (pDialog.isShowing()) {
pDialog.dismiss();
}
Intent intent = new Intent(ValidacionBlueTooth.this, Validador.class);
startActivity(intent);
}
编辑
我得到这个消息,它阻止对话框关闭,也阻止继续运行代码
01-27 16:11:31.041: W/ViewRootImpl(6633): Cancelling event due to no window focus: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_3, scanCode=4, metaState=0, flags=0x28, repeatCount=0, eventTime=81457114, downTime=81457113, deviceId=36, source=0x101 }
在keyListener之外创建一个类方法。然后在键侦听器中,关闭进度对话框
lectura.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View view, int keyCode, KeyEvent keyevent) {
pDialog = new ProgressDialog(ValidacionBlueTooth.this);
pDialog.setMessage("Sincronizando...");
pDialog.setCancelable(false);
pDialog.show()
if ((keyevent.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
if (pDialog.isShowing()) {
dismissDialog();
}
Intent intent = new Intent(ValidacionBlueTooth.this, Validador.class);
startActivity(intent);
}
}
private void dismissDialog() {
pDialog.dismiss();
}
代码很奇怪。为什么要创建一个新的进度对话框,并在用户按键时显示它?似乎你应该在其他地方创建你的对话(而不是在键侦听器中),并保留对它的引用,而不是每次创建一个新的。让我解释一下。我正在用蓝牙设备读取二维码。我阅读我在EditText上留下的所有内容,每次设备完成读取代码时,都会模拟输入键的压力。然后,当用户使用设备读取代码时,我需要部署一个加载器,因为读取文本可能很短,也可能很长,这需要时间,并且当您在EditText、book reading和I use中完成读写时@GeorgeMulliganThat很奇怪,因此您的
Validador
活动从未显示?您可能在代码的其他地方出错。您当前的活动是否正在运行,按键时是否可见,因为我知道您说过按键是模拟的。这是Android source在打印该消息时的评论:“这是一个焦点事件,窗口当前没有输入焦点或已停止。这可能是一个从上一阶段返回的事件,但窗口已失去焦点或同时停止。”亲爱的,确定问题所在。我们还可以在您的代码中识别当按下一个键时OnKey立即启动对话框,但在设备下方读取二维码并键入EditText仍在写入,因此出现此问题并停止工作。当对话已经在进行时,它正在写作。我认为我的逻辑是错误的,我必须找到另一种方法来创造这个。