一旦我使用EditText显示对话框,如何使软键盘出现?

我在这里阅读了几篇文章,并尝试使用谷歌搜索。但我仍然有这个问题: 我已经制作了一个子类自定义对话框。它包含一个EditText和一个Button(“OK”)。一旦对话框弹出,我想让键盘自动显示。 我通过这样做成功了:
imm = (InputMethodManager) EditDialog.this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS);
在我的自定义对话框的onCreate()和
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
在我的解雇()。 一旦弹出对话框,这将打开键盘,并在按下“确定”按钮后关闭键盘。 但是,如果软键盘打开,我按下我的手机/模拟器的HOME按钮,他们的键盘将保持打开状态,因为 - 我想 - 我用SHOW_FORCED强行打开它。因此,我试图隐藏(使用来自InputMethodManager的toggleSoftInput())键盘,如果它在对话框的父活动onPause()方法中打开。这似乎只能使用解决方法,如此处所示。 TL; DR:当我的带有EditText和Button的Dialog弹出时(我专注于EditText),我希望显示软键盘。我得到了它的工作,但它涉及写很多黑客正确关闭它。 编辑:我的代码基于此     
已邀请:
这在这里得到了解答,对我来说很有用。如果在显示键盘时按下主页按钮,则在按下主页键后会正确隐藏。     
@Override
public void onResume() {
    super.onResume();
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            try {
                InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.toggleSoftInputFromWindow(view.getWindowToken(), InputMethodManager.SHOW_FORCED, 0);
            } catch (Exception e) {

            }
        }
    }, 300);
}
和EditTextView类型的“视图”。 “context”是当前的Context。 希望可以帮助你。     
editTextProjectName.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editTextProjectName,
InputMethodManager.SHOW_IMPLICIT);
    

要回复问题请先登录注册