当我(在片段内部)进行调用以隐藏runOnUiThread()内部的键盘时,键盘会隐藏,但是当我从activity.getCurrentFocus()。post()内部执行相同操作时,键盘会执行不要隐藏。
1)代码下方
activity.runOnUiThread(new Runnable()
{
@Override
public void run()
{
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
});
2)但这不是
activity.getCurrentFocus().post(new Runnable()
{
@Override
public void run()
{
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
});
其中view = activity.getCurrentFocus();
android文档说明如下: -
a)public final void runOnUIThread(Runnable action) - 在UI线程上运行指定的操作。如果当前线程是UI线程,则立即执行该操作。如果当前线程不是UI线程,则该操作将发布到UI线程的事件队列
b)public boolean post(Runnable action) - 使Runnable被添加到消息队列中。 runnable将在用户界面线程上运行。
有人可以解释一下,提前致谢!
答案 0 :(得分:0)
我认为当你执行activity.getCurrentFocus().post()
时,它会在视图完成布局,重新调整大小和更新后执行。因此,如果您的视图不需要更新,那么将无法执行。您是否尝试添加日志/断点以查看它是否已执行?
如果它被执行,可能是键盘刚刚恢复。