我有一个应用程序,在某些时候包含FragmentActivity。这个FragmentActivity包含一些片段(FragmentA,FragmentB等)。在每个片段上,都有一个或多个EditText。
我正在尝试正确处理键盘。我想让键盘在我想要的时候出现或消失。
例如,创建FragmentA时,我想在EditText上打开键盘。然后,为用户提供三种选择:
他点击了一个转到下一个片段的按钮
他点击键盘的动作发送(没有做任何事情(故意)但正常关闭键盘)然后他可以点击视图中的按钮
他点击了手机的后退按钮。在这种情况下,它会关闭键盘,然后他可以点击视图中的按钮。
我的问题是,只要用户通过点击手机的后退按钮关闭键盘,Android就会认为他不想在活动中看到键盘。因此,当创建FragmentB时,我无法以编程方式在此片段的EditText上显示键盘(使用InputManager btw)。
然后,第二个问题是当我点击edittext获得焦点时,在Android 4.x中,键盘再次显示,没有任何问题,但是使用Android 2.x,甚至不可能再次显示键盘如果重点是编辑文本!这太痛苦了。 看来,一旦用户在一个活动(即使是片段活动)中使用后退按钮明确关闭键盘,您就无法再显示它。
有没有人有解决方案?也许玩InputManager中的标志?我没有得到所有这些以及他们做了什么。
答案 0 :(得分:2)
试试这个:
显示键盘:
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
EditText view = getCurrentFocus();
inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_FORCED);
隐藏键盘:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
希望它有所帮助;)