我在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();
}
答案 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);
更新我的回答。您的对话框可能已在运行。因此,请求在当前窗口中进行,然后您创建对话框。该对话框可能有自己的窗口,所以它没有显示?