Я пишу простой навык similart для примера фактов о самолете java, и у меня есть два странных поведения:
1) один и тот же код в одном намерении работает правильно, но в другом вызывает ошибку;
2) Я не могу удалить элемент из открытого статического списка!Я постараюсь объяснить лучше с очень близким примером.У меня есть два Интента, которые мы можем назвать: - ActionIntent;- StopIntent.
Первое намерение извлекает список (типа List), полученный из класса Constants, и возвращает атрибут случайного CustomObject - это работает правильно.Затем он должен установить для объекта атрибуты сеанса и удалить его из списка, поскольку в следующий раз ответ должен быть вторым атрибутом последнего CustomObject плюс первый атрибут нового CustomObject.Имеет ли это смысл?
Вот код:
// this row works correctly on the other intent
Map<String, Object> sessionAttributes = input.getAttributesManager().getSessionAttributes();
CustomObject last=(sessionAttributes.get("last")!=null) ? (CustomObject)sessionAttributes.get("last") : null;
List<CustomObject> allObjects = MAPPER.convertValue(Constants.getAllObjects(), List.class);
int index = new Random().nextInt(tutti.size());
CustomObject new = allObjects.get(index);
// a simple method that contains allObjects.remove(index) because it didn't work here but also this cause an error
Constants.removeCustomObjectFromList(index);
sessionAttributes.put("ultimoNome", nuovoNome);
String title = Constants.SKILL_TITLE;
String primaryText =new.getTrue();
String secondaryText =(last!=null) ?last.getFalse() : "";
String speechText = "" + secondaryText + " "+primaryText + "?";
return input.getResponseBuilder()
.withSpeech(speechText)
.withSimpleCard(title, primaryText)
.withReprompt(speechText)
.build();
Если я закомментирую строки, связанные с sessionAttribute и Constants.removeCustomObjectFromList, он будет работать правильно, но, как я уже сказал,ссылка на sessionAttribute работает правильно в другом намерении, и я должен удалить CustomObjects из моего начального списка, потому что пользователь должен слушать два раза одно и то же!Может кто-нибудь сказать мне, где найти хорошую информацию по этому вопросу?