Android键盘:管理碎片中的键盘外观/消失

Android键盘:管理碎片中的键盘外观/消失,android,android-activity,keyboard,focus,fragment,Android,Android Activity,Keyboard,Focus,Fragment,我有一个应用程序,在某个点上包含一个碎片活动。此碎片活动包含一些碎片(碎片A、碎片B等)。在每个片段上都有一个或多个EditText 我正在努力正确地操作键盘。我想让键盘随时出现或消失 例如,当创建FragmentA时,我想打开EditText上的键盘。然后,用户可以选择三个选项: 他点击一个按钮进入下一个片段 他点击键盘上的动作发送(不做任何事情(故意),但正常关闭键盘),然后他可以从视图中点击按钮 他点击了电话的后退按钮。在这种情况下,它关闭键盘,然后他可以单击视图中的按钮 我的问题是,每当

我有一个应用程序,在某个点上包含一个碎片活动。此碎片活动包含一些碎片(碎片A、碎片B等)。在每个片段上都有一个或多个EditText

我正在努力正确地操作键盘。我想让键盘随时出现或消失

例如,当创建FragmentA时,我想打开EditText上的键盘。然后,用户可以选择三个选项:

  • 他点击一个按钮进入下一个片段

  • 他点击键盘上的动作发送(不做任何事情(故意),但正常关闭键盘),然后他可以从视图中点击按钮

  • 他点击了电话的后退按钮。在这种情况下,它关闭键盘,然后他可以单击视图中的按钮

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

    然后,第二个问题是当我点击edittext以获得焦点时,在Android 4.x中,键盘再次显示,没有问题,但在Android 2.x中,即使焦点在edittext上,也不可能再次显示键盘!我快死了。 看起来,一旦用户在一个活动(甚至是片段活动)中使用后退按钮显式关闭键盘,就无法再次显示它

    有人有解决办法吗?也许在InputManager中玩旗子?我没有完全了解它们以及它们的功能。

    试试这个:

    显示键盘:

    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);
    
    隐藏键盘:

    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);
    
    希望有帮助;)