runOnUiThread()内のキーボードを隠すために(フラグメントの内部から)呼び出しを行うとキーボードは隠れますが私がactivity.getCurrentFocus()。post()の内部から同じことをすると、キーボードは隠されません。コードの下softkeyboardはview.post()で期待通りに動作しませんが、runOnUIThread()内でうまく動作します
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作品)が、これはAndroidのドキュメントは、次の言うview = activity.getCurrentFocus();
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);
}
});
ません: -
A)公衆final void runOnUIThread(Runnable action) - 指定されたactを実行します。イオンをUIスレッドに追加します。現在のスレッドがUIスレッドの場合、アクションは即座に実行されます。現在のスレッドがUIスレッドでない場合、アクションはUIスレッドのイベントキューにポストされます
b)public boolean post(実行可能アクション) - メッセージキューにRunnableが追加されます。実行可能ファイルはユーザーインターフェイススレッド上で実行されます。
誰かが親切に説明できますか、事前に感謝してください!
こんにちは@beef、お返事ありがとう、コードが実行されている、キーボードは単に非表示にしません。キーボードの呼び出しを非表示にする前に、キーボードの上にいくつかの単語候補が表示された「完了」ボタンがありますが、この後にgetCurrentFocus()。post()を使用してキーボード呼び出しを非表示にすると、完了したボタンはEnterボタンがあり、もうキーボードの上部に単語候補は表示されませんが、キーボードは隠れません。すべてが言って、私がrunOnUiThreadを使うと、キーボードは常に隠れてしまいます。 – Ajit
@Ajitそれは面白いです。完了ボタンが入力ボタンになるという事実は、キーボードが表示されるように求められているが、テキストフィールドに関する正しい情報を受け取っていないことを示唆している。テキストフィールドのタイプと同じです。今質問はなぜキーボードが再び出現するよう求められているのか... Traceviewを使って、 – beef