ボタンがクリックされたときにキーボードを非表示にするために、次のコードを使用しています。
private OnClickListener saveButtonListener = new OnClickListener() {
@Override
public void onClick(View v) {
final View activityRootView = findViewById(R.id.myProfileDetails);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
});
//other code that does something
}
}
ボタンは他にもいくつかのことを行いますが、キーボードに関連するものはなく、ボタンを押してもアクティビティは変わりません。
またEditText
、私の活動には 2 つのフィールドがあります。アプリケーションを使用しているときにいずれかのフィールドをタップすると、それらがフォーカスされてキーボードが表示されます。ボタンを押すと、キーボードが消え、他のコードが正確に実行されます。この場合、すべてが完璧です。
EditText
いずれかのフィールドを 2 回タップすると問題が発生します。これで、EditText
フォーカスが得られますが、何もしなくてもキーボードがほぼ瞬時に表示および非表示になります。ボタンを初めてクリックした後、コードがキーボードを完全に非表示にしていると思います。なぜこれが起こっているのですか?どうすれば修正できますか?