Как скрыть клавиатуру и программно обновить EditTextPreference?
Я пытаюсь реализовать настройку активности в соответствии с инструкциями. у меня есть EditTextPreference
что я хочу сохранить, но вместо того, чтобы позволить пользователю вводить любое значение, значение должно прийти через Bluetooth (у меня есть готовая часть Bluetooth).
В тот момент, когда EditTextPreference
нажата, она показывает всплывающее окно редактора с кнопками ОК и Отмена. Вот как я хочу, чтобы я мог справиться с OK
или же Cancel
Нажмите на события.
1) Первая проблема состоит в том, что клавиатура также появляется - я не хочу этого, потому что значение должно исходить из фона. Я добавил эти свойства, но, кажется, ничто не влияет на скрытие клавиатуры (даже если я переключаю их):
<EditTextPreference
android:selectable="true"
android:enabled="true"
android:editable="true"
android:focusable="false"
android:focusableInTouchMode="false"
android:cursorVisible="false"
android:capitalize="words"
android:inputType="none"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/pref_title_id" />
2) Вторая проблема: как мне обновить значение EditTextPreference
Исходя из кода, пользователь не должен ничего вводить, а просто посмотреть значение и нажать "ОК" или "Отмена"?
3) Третья проблема / вопрос: можно ли сохранять значения в базе данных вместо использования общих настроек? По сути, я хочу иметь общий интерфейс настроек, но сохраняю значения в базе данных.
Я надеюсь, что у кого-то были те же проблемы, что и у меня, потому что я не смог найти никаких решений в интернете.
3 ответа
Для обновления EditTextPreference установите этот флажок EditTextPreference.setText(значение), который не обновляется должным образом
Для отключения ввода =>
setFocusableInTouchMode(boolean)
setFocusable(boolean)
Попробуйте следующий код в методе onCreate вашей деятельности, чтобы клавиатура всплывала только тогда, когда пользователь нажимает EditText.
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
или же
использование
android:windowSoftInputMode="stateHidden"
вAndroid Mainfest.xml
подactivity
тег
Чтобы скрыть Keybord, вызовите этот метод в вашем событии onClick
private void hideKeyboard() {
View view = getCurrentFocus();
if (view != null) {
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).
hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
1. Когда вы нажимаете на поле редактирования, вы должны вызвать этот метод, который скрывает клавиатуру.
private void hideKeyboard() {
View view = getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
Для установки значения в editText используйте метод:
editTextPreferences.setText("Your value");
Для сохранения только значения вы можете использовать Shared Preference, потому что он более гибкий, но если вы хотите сохранить больше данных и иметь все в БД, вы можете использовать SQLite db. Оба они сохраняют локальные значения, потому что, когда приложение удаляется, они удаляются.