0

我在DialogFragment对话框打开时onCreateDialog使用来显示键盘。InputMethodManager但是,由于某种原因它不起作用。有谁知道为什么?

        @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder b = new Builder(getActivity());

        b.setMessage("Enter a 5 digit zipcode");
        final EditText et = new EditText(getActivity());
        et.setInputType(InputType.TYPE_CLASS_NUMBER);
        et.requestFocus();
        et.setHint("Zipcode");
        InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(INPUT_METHOD_SERVICE);
        imm.showSoftInput(et, InputMethodManager.SHOW_FORCED);
        b.setView(et);          
        return b.create();
    }
4

2 回答 2

0

您可能需要请求关注 EditText。如果在 Dialog 上可用,我还发现 getWindow() 更可靠。

       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    et.requestFocus();
    getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

更新我的答案。您的对话框可能已经在运行。所以请求是在当前窗口发出的,然后你创建对话框。对话框可能有自己的窗口,所以它不显示?

于 2012-07-13T20:35:19.790 回答
0

您是否尝试过在 Android 设备上运行代码?如果您使用的是 android 模拟器,则很可能您的模拟器的硬件属性中的键盘支持已关闭。

要启用它,请转到 AVD Manager-> Edit AVD-> Hardware-> Add Keyboard Support / Edit Keyboard Support 并启用其值

于 2012-07-13T19:55:34.230 回答