Клавиатура не отображается в диалоговом окне нижнего листаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Клавиатура не отображается в диалоговом окне нижнего листа

Сообщение Anonymous »

У меня возникла проблема с вложенным BottomSheetDialog в моем приложении для Android. Первый метод, showFilterBottomSheet(), создает BottomSheetDialog с такими фильтрами, как класс и раздел. На этом листе вы можете открыть другой BottomSheetDialog, используя метод showMultiSelectBottomSheet(), который содержит поиск EditText для фильтрации элементов. Проблема в том, что при появлении второго нижнего листа клавиатура не отображается при фокусировке на EditText (ID: searchEditText).

Код: Выделить всё

private void showFilterBottomSheet() {

BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(FeeDefaulters.this);
View bottomSheetView = getLayoutInflater().inflate(R.layout.bottom_sheet_filters, null);

campusInputLayout = bottomSheetView.findViewById(R.id.campusInputLayout);
classInputLayout = bottomSheetView.findViewById(R.id.classInputLayout);
sectionInputLayout = bottomSheetView.findViewById(R.id.sectionInputLayout);
campusAutoCompleteTextView = bottomSheetView.findViewById(R.id.campusAutoCompleteTextView);
classAutoCompleteTextView = bottomSheetView.findViewById(R.id.classAutoCompleteTextView);
sectionAutoCompleteTextView = bottomSheetView.findViewById(R.id.sectionAutoCompleteTextView);
buttonApplyFilters = bottomSheetView.findViewById(R.id.buttonApplyFilters);

updateSelectedItemsText(campusAutoCompleteTextView, selectedCampuses);
updateSelectedItemsText(classAutoCompleteTextView, selectedClasses);
updateSelectedItemsText(sectionAutoCompleteTextView, selectedSections);

campusAutoCompleteTextView.setOnClickListener(v -> showMultiSelectBottomSheet("Campus", allCampuses, selectedCampuses, campusAutoCompleteTextView));
classAutoCompleteTextView.setOnClickListener(v -> showMultiSelectBottomSheet("Class", allClasses, selectedClasses, classAutoCompleteTextView));
sectionAutoCompleteTextView.setOnClickListener(v -> showMultiSelectBottomSheet("Section", allSections, selectedSections, sectionAutoCompleteTextView));

buttonApplyFilters.setOnClickListener(v -> {
Toast.makeText(FeeDefaulters.this, "Filters Applied", Toast.LENGTH_SHORT).show();
loadDataForTables();
bottomSheetDialog.dismiss();
});

bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
}

Код: Выделить всё

    private void showMultiSelectBottomSheet(String filterType, List allItems, List selectedItems, TextView textViewToUpdate) {
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(FeeDefaulters.this);
View bottomSheetView = getLayoutInflater().inflate(R.layout.bottom_sheet_multiselect, null);

RecyclerView recyclerView = bottomSheetView.findViewById(R.id.recyclerViewMultiSelect);
Button buttonApplyMultiSelect = bottomSheetView.findViewById(R.id.buttonApplyMultiSelect);
ImageButton closebtn = bottomSheetView.findViewById(R.id.closebtn);
EditText searchEditText = bottomSheetView.findViewById(R.id.searchEditText);
CheckBox selectAllCheckbox = bottomSheetView.findViewById(R.id.selectAllCheckbox);

closebtn.setOnClickListener(v -> bottomSheetDialog.dismiss());
bottomSheetDialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN |
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
);

recyclerView.setLayoutManager(new LinearLayoutManager(this));
MultiSelectAdapter adapter = new MultiSelectAdapter(allItems, selectedItems);
recyclerView.setAdapter(adapter);

selectAllCheckbox.setOnCheckedChangeListener((buttonView, isChecked) -> {
adapter.selectAll(isChecked);
});

adapter.setOnSelectionChangedListener(selectedItemsCount -> {
selectAllCheckbox.setChecked(selectedItemsCount == allItems.size());
});

buttonApplyMultiSelect.setOnClickListener(v -> {
updateSelectedItemsText(textViewToUpdate, adapter.getSelectedItems());
bottomSheetDialog.dismiss();
});

bottomSheetDialog.setOnShowListener(dialogInterface -> {
BottomSheetDialog dialog = (BottomSheetDialog) dialogInterface;
FrameLayout bottomSheet = dialog.findViewById(com.google.android.material.R.id.design_bottom_sheet);
if (bottomSheet != null) {
BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);
behavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}

searchEditText.postDelayed(() ->  {
InputMethodManager imm = (InputMethodManager) searchEditText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.showSoftInput(searchEditText, InputMethodManager.SHOW_IMPLICIT);
}
searchEditText.requestFocus();
}, 1000);
});

// Search functionality
searchEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.filter(s.toString());
}

@Override
public void afterTextChanged(Editable s) { }
});

bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
}
Изображение

Я установил softInputMode с помощью SOFT_INPUT_ADJUST_RESIZE | SOFT_INPUT_STATE_VISIBLE, но, похоже, это не помогает. EditText получает фокус, но клавиатура не появляется.


Подробнее здесь: https://stackoverflow.com/questions/790 ... eet-dialog
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Использование нижнего листа Jetpack Compose для создания нижнего листа экрана профиля Snapchat
    Anonymous » » в форуме Android
    0 Ответы
    78 Просмотры
    Последнее сообщение Anonymous
  • Jetpack Compose: клавиатура закрывает текстовое поле в диалоговом окне
    Anonymous » » в форуме Android
    0 Ответы
    106 Просмотры
    Последнее сообщение Anonymous
  • Jetpack Compose: клавиатура закрывает текстовое поле в диалоговом окне
    Anonymous » » в форуме Android
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • В диалоговом окне MudBlazor не отображается .NET 8
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Цвет модального нижнего листа не отображается в строке состояния в создании Jetpack.
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»