我在玩键盘开发,当按下某个键时,试着显示一个弹出对话框
if (primaryCode == -301) {
AlertDialog mDialog = new AlertDialog.Builder(CONTEXT)
.setTitle("My dialog")
.setMessage("Lets do it.")
.setPositiveButton("ok", null).create();
mDialog.show();
}
然而,问题是
CONTEXT
部分。在正常应用中,它只是this
。我也尝试过getApplicationContext()
和getBaseContext()
,但这两种方法都没有成功->键盘崩溃。android.view.windowmanager$BadTokenException:窗口管理器$BadTokenException异常:
无法添加窗口--标记null为
不适用于申请
所以我想知道我是否需要做些什么:
inputConnection接口是
来自
inputMethod返回应用程序
它正在接收它的输入。它是
用来做阅读之类的事情
光标周围的文本,提交
文本到文本框,并发送原始
应用程序的关键事件。
到目前为止,我还不知道该怎么做。我知道这是可能的,因为我以前见过。我有人可以给我指一个正确的方向,这绝对是值得赞赏的。
更新:
为了更好地展示我所要达到的目标,我上传了一张swype键盘的截图,它确实做到了这一点:当键盘上按下一个特殊的键时,会显示一个弹出对话框。
最佳答案
愿和平降临在那些遵循指引的人身上,
解决方案:
AlertDialog dialog;
//add this to your code
dialog = builder.create();
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.token = mInputView.getWindowToken();
lp.type = WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG;
window.setAttributes(lp);
window.addFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
//end addons
alert.show();
祝你好运。