【问题标题】:Android soft keyboard : hide then show immediatelyAndroid软键盘:隐藏然后立即显示
【发布时间】:2014-09-24 06:47:43
【问题描述】:

假设我有一个显示片段 A 的活动。从片段 A 我单击按钮切换到片段 B。 在片段 A 上,我将软键盘隐藏在 onPause() 方法中。 在片段 B 上,我在 onResume() 方法中显示软键盘。

现在,当我单击按钮时,会显示片段 B,但未显示键盘,这不好。 如果片段 A 不使用键盘(删除 onPause() 中的隐藏软键盘代码),那么它可以正常工作。

我设置了断点,并且片段 A 的 onPause 肯定在片段 B 的 onResume() 之前被调用。 所以理论上我认为无论如何都应该显示键盘。

有什么想法吗?

【问题讨论】:

  • 我怀疑正在发生的事情是隐藏和显示键盘的调用被安排在 UI 线程上运行,显示几乎在隐藏之后立即进行。由于键盘需要一些时间才能在屏幕外设置动画,我怀疑 show 命令已从 UI 处理程序中出列并尝试执行,但发现键盘仍然存在,所以什么也没做。
  • 这也是我怀疑的。但是做延迟不是一个干净的方法。不知道有没有更好的办法。
  • 就个人而言,我不会在 onPause() / onResume() 中操作键盘。
  • @Karakuri:你能详细说明一下吗?
  • 我会删除键盘操作。从 A 切换到 B 时,您会降低并重新抬起键盘当然没有任何意义。

标签: android show-hide android-softkeyboard


【解决方案1】:

您可以稍微延迟键盘的显示。类似:

Handler handler = new Handler();
handler.postDelayed(new Runnable(){
    @Override
    public void run(){
        //show the keybpoard
    }

}, 500);

【讨论】:

    猜你喜欢
    • 2012-12-02
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多