Android 如何显示AlertDialog表单inputMethod

Android 如何显示AlertDialog表单inputMethod,android,service,android-alertdialog,Android,Service,Android Alertdialog,按下inputmethod中的键盘时,显示AlertDialog有问题。 我已经尝试了很多方法来做到这一点 比如这里的KeyBoard.java case Keyboard.KEYCODE\u SHIFT: imeService.showDialog() ImeService在这里扩展了InputMethodService AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this); dialog.setTi

按下inputmethod中的键盘时,显示AlertDialog有问题。 我已经尝试了很多方法来做到这一点 比如这里的KeyBoard.java

case Keyboard.KEYCODE\u SHIFT:
imeService.showDialog()

ImeService在这里扩展了InputMethodService

AlertDialog.Builder dialog=new AlertDialog.Builder(MainActivity.this);
    dialog.setTitle("123");
    dialog.setMessage("123");
    dialog.setPositiveButton("123", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getApplicationContext(), "123", Toast.LENGTH_SHORT).show();
                }
            });
    dialog.setNegativeButton("123", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getApplicationContext(), "123", Toast.LENGTH_SHORT).show();
                }
            });
    dialog.setNeutralButton("123", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getApplicationContext(), "123", Toast.LENGTH_SHORT).show();
                }
            });
    AlertDialog a=dialog.create();
    a.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    a.show();
我在舱单上也有许可

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

为什么还是错的? 始终关闭应用程序

错误日志

05-02 00:03:40.911 23064-23064/io.github.timeime.time E/InputEventReceiver:异常调度输入事件。 05-02 00:03:40.911 23064-23064/io.github.timeime.time E/MessageQueue JNI:MessageQueue回调中的异常:HandlerReceiveCallback 05-02 00:03:40.911 23064-23064/io.github.timeime.time E/MessageQueue JNI:java.lang.IllegalStateException:此活动需要使用Theme.AppCompat主题(或子代)。 在android.support.v7.app.AppCompateDelegateImplv9.createSubDecor(AppCompateDelegateImplv9.java:355) 在android.support.v7.app.AppCompateDelegateImplV9.ensureSubDecor(AppCompateDelegateImplV9.java:324) 在android.support.v7.app.AppCompateDelegateImplV9.setContentView(AppCompateDelegateImplV9.java:285) 位于android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:83) 位于android.support.v7.app.AlertController.installContent(AlertController.java:225) 位于android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:257) 在android.app.Dialog.dispatchOnCreate(Dialog.java:578)上 在android.app.Dialog.show上(Dialog.java:314) 位于io.github.timeime.time.ImeService.showDialog(ImeService.java:60) 位于io.github.timeime.time.KeyboardUtil$1.onKey(KeyboardUtil.java:59) 在android.inputmethodservice.KeyboardView.detectAndSendKey(KeyboardView.java:831)中 在android.inputmethodservice.KeyboardView.onModifiedTouchEvent(KeyboardView.java:1361)上 在android.inputmethodservice.KeyboardView.onTouchEvent(KeyboardView.java:1224)中 在android.view.view.dispatchTouchEvent上(view.java:9993) 在android.view.ViewGroup.DispatchTransformedToucheEvent(ViewGroup.java:2839)上 位于android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2514) 在android.view.ViewGroup.DispatchTransformedToucheEvent(ViewGroup.java:2839)上 位于android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2514) 在android.view.ViewGroup.DispatchTransformedToucheEvent(ViewGroup.java:2839)上 位于android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2514) 在android.view.ViewGroup.DispatchTransformedToucheEvent(ViewGroup.java:2839)上 位于android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2514) 在android.view.ViewGroup.DispatchTransformedToucheEvent(ViewGroup.java:2839)上 位于android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2514) 在com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2831)上 在com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1863)上 位于android.app.Dialog.dispatchTouchEvent(Dialog.java:982) 在android.inputmethodservice.SoftInputWindow.dispatchTouchEvent(SoftInputWindow.java:153)上 在com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2792)上 位于android.view.view.dispatchPointerEvent(view.java:10228) 位于android.view.ViewRootImpl$viewPostimeiInputStage.processPointerEvent(ViewRootImpl.java:5350) 在android.view.ViewRootImpl$viewPostimeiInputStage.onProcess中(ViewRootImpl.java:5186)