Android键盘:管理片段内的键盘外观/消失

时间:2014-02-06 17:05:58

标签: android android-activity keyboard focus fragment

我有一个应用程序,在某些时候包含FragmentActivity。这个FragmentActivity包含一些片段(FragmentA,FragmentB等)。在每个片段上,都有一个或多个EditText。

我正在尝试正确处理键盘。我想让键盘在我想要的时候出现或消失。

例如,创建FragmentA时,我想在EditText上打开键盘。然后,为用户提供三种选择:

  1. 他点击了一个转到下一个片段的按钮

  2. 他点击键盘的动作发送(没有做任何事情(故意)但正常关闭键盘)然后他可以点击视图中的按钮

  3. 他点击了手机的后退按钮。在这种情况下,它会关闭键盘,然后他可以点击视图中的按钮。

  4. 我的问题是,只要用户通过点击手机的后退按钮关闭键盘,Android就会认为他不想在活动中看到键盘。因此,当创建FragmentB时,我无法以编程方式在此片段的EditText上显示键盘(使用InputManager btw)。

    然后,第二个问题是当我点击edittext获得焦点时,在Android 4.x中,键盘再次显示,没有任何问题,但是使用Android 2.x,甚至不可能再次显示键盘如果重点是编辑文本!这太痛苦了。 看来,一旦用户在一个活动(即使是片段活动)中使用后退按钮明确关闭键盘,您就无法再显示它。

    有没有人有解决方案?也许玩InputManager中的标志?我没有得到所有这些以及他们做了什么。

1 个答案:

答案 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);

希望它有所帮助;)

相关问题