Я имел дело со странной проблемой.У меня в приложении 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 работает нормально.