【问题标题】:Android Keyboard : managing Keyboard appearance / disappearance inside fragmentsAndroid键盘:管理片段内的键盘外观/消失
【发布时间】:2014-03-03 18:45:33
【问题描述】:

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

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

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

  1. 他点击了一个按钮,进入下一个片段

  2. 他点击键盘的动作发送(什么都不做(故意)但正常关闭键盘),然后他可以从视图中点击按钮

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

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

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

有人有解决办法吗?也许玩 InputManager 中的标志?我没有了解所有这些以及它们的作用。

【问题讨论】:

    标签: android android-activity keyboard focus fragment


    【解决方案1】:

    试试这个:

    显示键盘:

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

    希望对你有帮助;)

    【讨论】:

      猜你喜欢
      • 2020-09-24
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 1970-01-01
      • 2010-11-09
      相关资源
      最近更新 更多