У меня есть 2 поля редактирования в моем пользовательском диалоге, который вызывается из ACtivity, среди них 1 имеет тип "trxtPassword" и другой тип "текст". Клавиатура не появляется в поле ввода типа «текст», а просто появляется в текстовом поле «textPassword», а затем не только.
Я попробовал следующее, но ничего не работает:
InputMethodManager inputManager = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
//inputManager.hideSoftInputFromWindow(txt_username.getWindowToken(), 0);
//inputManager.hideSoftInputFromWindow(txt_password.getWindowToken(), 0);
Если я сделаю txt_password.setInputType (0); тогда другие могут легко увидеть пароль, чтобы его нельзя было использовать.
Что еще можно сделать для достижения цели? Я сделал, чтобы поймать onLostFocus на TXT
txt_password.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus == false) {
InputMethodManager inputManager = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(LoginDialog.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
}
}
});
Но, к сожалению, однажды введенный, если я нажимаю где-либо еще или любой флажок, то также фокус не теряется из поля txt_password. Это теряется только в том случае, если я щелкаю другой editText, а затем происходит событие onFocusChange, которое выдает ошибку и приложение закрывается.
Есть идеи, как этого добиться?