Android中DialogFragment自动弹出输入法
来源:互联网 发布:东华his 数据库表结构 编辑:程序博客网 时间:2024/04/24 08:29
记录一下刚刚解决的问题,DialogFragment中的EditText获得焦点后自动弹出输入法的办法。
网上找到好多资料,但是很多已经过时或者不是针对dialog的设置。
现在将我测试成功的方法记录如下,供大家参考。
现在比较喜欢继承DialogFragment来实现dialog,这样dialog相关的代码可以分离出去,而且dialog的生命周期可以和Fragment一样管理。而我们现在讨论的弹出输入法也和生命周期回调方法有关。
继承DialogFragment实现dialog,实现onCreateDialog()方法,在这个方法中创建dialog并返回,这和以前创建diglog是一样的。
@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {log.info("onCreateDialog");AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());builder.setTitle("密码输入框");builder.setMessage("输入密码:");editTextPassword = new EditText(getActivity());editTextPassword.setFocusable(true);editTextPassword.setFocusableInTouchMode(true);editTextPassword.requestFocus();builder.setView(editTextPassword);builder.setPositiveButton(android.R.string.ok, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.setNegativeButton(android.R.string.cancel, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});return builder.create();}
上面的代码创建了一个Alert类型的Dialog,并且包含一个可以输入的EditText。
好多人都说,EditText获得焦点后,就会弹出输入法,其实不然。具体原因我也不是很清楚,在这里我们还需要手动让输入法出现。
实现DialogFragment的生命周期方法onResume(),这个方法会在dialog显示的时候被回调,然后在里面发送一个延时消息,调出输入法。
@Overridepublic void onResume() {super.onResume();log.info("onResume");(new Handler()).postDelayed(new Runnable() {public void run() {log.info("postDelayed");InputMethodManager inManager = (InputMethodManager)editTextPassword.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);inManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);}},500);}
run()方法中的那两句代码就是启动输入法的,如果不用延时的方法,输入法会瞬间弹出,然后又消失。原因我还是不知道,才疏学浅,请见谅。
这样,我们在使用这个dialog的时候,就会自动弹出输入法了。
- Android中DialogFragment自动弹出输入法
- Android中DialogFragment自动弹出输入法
- 【Android】【输入法】android 自动弹出输入法
- Android中如何阻止EditText自动弹出输入法
- Android中EditText隐藏/自动弹出输入法的问题
- Android解决输入法自动弹出方法大全
- Android 进入时屏蔽输入法自动弹出
- android自动弹出软键盘(输入法)
- Android:自动弹出/隐藏 输入法软键盘
- Android 之EditText自动弹出/不弹出输入法
- dialog中含有edittext弹出时自动弹出输入法
- android popupwindow 中EditText自动弹出输入法并获取焦点 解决办法
- 使EditText不自动获取焦点(Android中系统输入法不主动弹出)
- DialogFragment全屏及软键盘自动弹出
- Android AlertDialog中EditText无法弹出输入法
- Android的EditText自动获取焦点并弹出输入法问题
- Android的EditText自动获取焦点并弹出输入法问题
- Android的EditText自动获取焦点并弹出输入法问题
- 通州临沧黄骅宁波1383829070281
- 淮北韶关瑞安包头从化任丘1383828939311
- 反调试技巧总结-原理和实现
- 运城大冶扬中开远1383829076953
- C++设计模式之八--Builder建造者模式
- Android中DialogFragment自动弹出输入法
- 济宁酒泉肥城莱芜讷河临沧1383828967702
- shell脚本---回文检测
- Fedora快捷键大全
- HDU 3682To Be an Dream Architect(统计规律题目 三线相交bug)
- 04-Failed to load the JNI shared Library (JDK)
- 鄂州通化思茅敦煌南充资兴1383828996003
- 漯河福安从化南通1383829129812
- 义乌盐城喀什杭州沁阳永康1383829008931