Неправильный индекс на onClick при использовании AlertDialog с MultiChoiceItems в API 26 [Android] - PullRequest
0 голосов
/ 26 сентября 2019

Я имел дело со странной проблемой.У меня в приложении AlertDialog многократный выбор и одиночный выбор.До сих пор все работало нормально, я тестирую свое приложение на Huawei Y5, оно имеет Android 8.1.0 и работает с API 27. Проблема в том, что в этом API методы setMultiChoiceItems и setSingleChoiceItems выдают мне ошибку indexOfOutOfBounds, когда я нажимаюв последнем пункте.

Сбой происходит, когда я щелкаю в последнем варианте, например, 3, слушатель говорит мне, что я щелкнул элемент в позиции 3, поэтому, когда он идет, чтобы проверить в itemsSelected, если он отмечен или нет, поскольку всего 3 элемента и массив начинается с 0, индекс 3 не существует и происходит сбой.

Я уже пытался увеличить этот массив "itemsSelected" для индекса 3, и теперь происходит сбойушел, но даже когда я поставил значение true в индексе 3 для проверки элемента, он не работает.Ничего не делает.

Вот мой код:

@Override
    public View generate() {
        CharSequence[] items = new String[this.parameters.size()];
        for (int i = 0; i < this.parameters.size(); i++) {
            items[i] = this.parameters.get(i).getLabel();
            this.itemsSelected[i] = this.parameters.get(i).isChecked();
        }
        this.module.builder.setMultiChoiceItems(items, itemsSelected, new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                parameters.get(which).setChecked(isChecked);
                module.validateControls();
            }
        });
        return null;
    }

Я действительно не знаю, изменилось ли что-то, я проверил документацию и ничего не смог найти.Со старыми API работает нормально.

...