Android Fragment:开发大屏幕平板时UserDictionaryAddWordFragment编辑后软键盘不能自动隐藏的问题

本文介绍了一个关于设置应用中用户字典Fragment的bug修复过程,该bug导致输入面板无法自动隐藏。通过在UserDictionaryAddWordFragment的onPause方法中加入特定代码,实现了当退出Fragment时自动隐藏输入面板。

           昨天收到一个bug,描述如下:

1 Enter Settings-->Language&input

2 Choose personal dictionary
3.Choose add in menu
4.Input some word and choose personal dictionary
[Expected result]
The word can be added to dictionary and no any error
[Error]
The input panel can't hide

进入添加用户字典后编辑并退出,但是input panel不能自动隐藏。这个问题涉及到fragment的概念,关于理解fragment的概念,可以参考http://www.cnblogs.com/mybkn/articles/2455134.html

        添加用户字典是在UserDictionaryAddWordFragment中进行的,UserDictionaryAddWordFragment继承于Fragment。

\packages\apps\Settings\src\com\android\settings\inputmethod\UserDictionaryAddWordFragment.java

在它的onPause()方法中添加如下code:

  boolean autoHide = getResources().getBoolean(R.bool.auto_hide_keyboard_when_onpause);

        if (autoHide){

            ContexttContext = getActivity();

           InputMethodManager imm =(InputMethodManager)getActivity().getSystemService(tContext.INPUT_METHOD_SERVICE);

           imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(),0);

        }

其中的R.bool.auto_hide_keyboard_when_onpause这个值在\packages\apps\Settings\res\value下的bool.xml中定义。smart-phone的这个值是false,value-sw600dp目录下的bool.xml中的值为true。

Fragment的onPause方法是在看不见这个Fragment的时候被调用的,所以把这段code加在onPause方法中即可实现退出这个Fragment时自动隐藏输入法界面。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值