-1
requestFocus
を自動的にEditText
にフォーカスするように呼びましたが、時には機能するか動作しない場合があります。私たちはUIスレッドにrunnableを追加してそれに集中しました。requestFocus()が機能しない理由は何ですか?
view.post(new Runnable() {
@Override
public void run() {
view.requestFocus();
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view, InputMethodManager.SHOW_FORCED);
}
});
最後に、私はそれがうまくいくことを知っていますが、私は本当に理由が不思議です。どうして?それを知っている人はいますか? (それは 将来的に呼び出されるメインキューにこの呼び出しをスケジュールします
button.post(new Runnable(){
@Override
public void run(){
inflatedView.requestFocus();
} });
:
UIスレッドはAndroidのメインスレッドです。何が邪魔でしょうか? –
メインスレッドとUIスレッドは同じものです。つまり、同じエンティティです。したがって、あなたの前提は間違っていて、他にも問題があるかもしれません。私はあなたのビュー階層を見て、それがフォーカスを消費している他のビューではないことを確認することをお勧めします。 – Dibzmania
@OlegBogdanov **メインスレッドは必ずしもUIスレッドではありません**。ドキュメントを読む。 – Enzokie