Android 在AlertDialog中显示软键盘键入SYSTEM\u ERROR或SYSTEM\u ALERT
我的活动中有一个AlertDialog(这是一个锁应用程序),所以我可以阻止系统按钮Android 在AlertDialog中显示软键盘键入SYSTEM\u ERROR或SYSTEM\u ALERT,android,android-layout,android-alertdialog,android-softkeyboard,Android,Android Layout,Android Alertdialog,Android Softkeyboard,我的活动中有一个AlertDialog(这是一个锁应用程序),所以我可以阻止系统按钮 public OverlayDialog(Activity activity, boolean backShouldWork, boolean justFinish) { super(activity, R.style.OverlayDialog); activ = activity; WindowManager.LayoutParams params =
public OverlayDialog(Activity activity, boolean backShouldWork, boolean justFinish) {
super(activity, R.style.OverlayDialog);
activ = activity;
WindowManager.LayoutParams params = getWindow().getAttributes();
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
params.dimAmount = 0.0F; // transparent
params.width = MATCH_PARENT;
params.height = MATCH_PARENT;
params.gravity = Gravity.BOTTOM;
getWindow().setAttributes(params);
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
getWindow().setFlags(FLAG_SHOW_WHEN_LOCKED | FLAG_NOT_TOUCH_MODAL, 0xffffff);
setOwnerActivity(activity);
setCancelable(false);
}
protected final void onCreate(Bundle bundle) {
super.onCreate(bundle);
hideSystemUI(getWindow().getDecorView());
sp = PreferenceManager.getDefaultSharedPreferences(getContext());
editor = sp.edit();
emergencyType = sp.getInt("emergency", 0);
sequence = new ArrayList<>();
mHandler = new Handler();
mRunnable = new Runnable() {
@Override
public void run() {
if (upPress && backPressed) {
activ.finish();
}
}
};
FrameLayout framelayout = new FrameLayout(getContext());
framelayout.setBackgroundColor(0);
EditText editText = new EditText(getContext());
showKeyboard(editText);
framelayout.addView(editText);
setContentView(framelayout);
}
public void showKeyboard(final EditText ettext) {
ettext.requestFocus();
ettext.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager keyboard = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.showSoftInput(ettext, InputMethodManager.SHOW_FORCED);
}
} , 200);
}
public overlydialog(活动活动、布尔backShouldWork、布尔justFinish){
超级(活动,R.style.overlydialog);
activ=活动;
WindowManager.LayoutParams params=getWindow().getAttributes();
params.type=WindowManager.LayoutParams.type\u系统错误;
params.dimAmount=0.0F;//透明
params.width=匹配父项;
params.height=匹配父项;
params.gravity=gravity.BOTTOM;
getWindow().setAttributes(参数);
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT\输入\状态\可见
getWindow().setFlags(锁定时显示标志、不触摸标志、0xffffff模式);
setOwnerActivity(活动);
可设置可取消(假);
}
创建时受保护的最终无效(捆绑){
super.onCreate(bundle);
hideSystemUI(getWindow().getDecorView());
sp=PreferenceManager.getDefaultSharedReferences(getContext());
editor=sp.edit();
emergencyType=sp.getInt(“紧急”,0);
序列=新的ArrayList();
mHandler=新处理程序();
mRunnable=newrunnable(){
@凌驾
公开募捐{
如果(上压和下压){
完成动作();
}
}
};
FrameLayout=newframelayout(getContext());
framelayout.setBackgroundColor(0);
EditText EditText=新的EditText(getContext());
显示键盘(编辑文本);
framelayout.addView(编辑文本);
setContentView(框架布局);
}
公共无效显示键盘(最终编辑文本){
ettext.requestFocus();
ettext.postDelayed(新的Runnable(){
@凌驾
公开募捐{
InputMethodManager键盘=(InputMethodManager)getContext().getSystemService(Context.INPUT\u方法\u服务);
键盘.showSoftInput(ettext,InputMethodManager.SHOW_强制);
}
} , 200);
}
问题是软键盘没有显示。我尝试强制输入法始终可见,并请求编辑文本的焦点,但没有成功
有人遇到过这个问题吗