我在玩键盘开发,当按下某个键时,试着显示一个弹出对话框

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();

祝你好运。

08-06 13:35