为什么软键盘不会显示在这里?

时间:2012-07-13 19:22:07

标签: android android-softkeyboard android-dialogfragment

我在DialogFragmentonCreateDialog我正在使用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();
    }

2 个答案:

答案 0 :(得分:0)

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

要启用它,请转到AVD Manager->编辑AVD->硬件>添加键盘支持/编辑键盘支持并启用其值

答案 1 :(得分:0)

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

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

更新我的回答。您的对话框可能已在运行。因此,请求在当前窗口中进行,然后您创建对话框。该对话框可能有自己的窗口,所以它没有显示?