当我调用(从片段内部)将键盘隐藏在 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 将在用户界面线程上运行。
有人可以解释一下吗,在此先感谢!