#codenameone
Вопрос:
Моя ОС-Windows 10 Pro, IDE: Netbeand 12.2, симулятор последней версии:
Проблема заключается в блокировке диалогового окна при создании второго экземпляра в том же экземпляре формы только для IOS. Симулятор и Андроид ведут себя так, как и ожидалось.
Очень странное поведение. В форме я нажимаю кнопку, чтобы создать экземпляр класса (A1MMASiteMeterReadDialog) диалогового окна типа, я передаю некоторые векторы данных и выполняю задачи. Когда закончим, мы выполним dispose() для этого.
a1SiteMeterReadDialog = новый A1MMASiteMeterReadDialog(страница a1MMAHomePage, res, inc);
Пользователь может повторно ввести этот класс (A1MMASiteMeterReadDialog) несколько раз, если он не выполнил все задачи.
Только в IOS при повторном вводе во второй раз класс выглядит нестабильным, некоторые текстовые поля ведут себя неправильно и не реагируют на список действий, в конечном итоге после еще нескольких операций в этом случае приложение блокируется. Журналы Codename1 и собственные журналы ничего не показывают, никаких признаков возникновения исключения. Придется принудительно остановить приложение и перезапустить его.
Очень странно.
Мне интересно, ведет ли dispose() на IOS себя на IOS иначе, чем на Android или симуляторе. Или IOS содержит ссылку на первый экземпляр класса, и повторное создание экземпляра класса не является чистым и объясняет нестабильное поведение.
Я потратил почти 2 недели на работу над этим и не приблизился к решению. Любые мысли по этому поводу были бы оценены по достоинству?
С уважением
Комментарии:
1. Мне понадобится способ воспроизвести это, чтобы дать лучший ответ. Если вы сможете воспроизвести это в xcode и последовательно запускать его, возможно, найдется определенный собственный стек, который может указать на что-то интересное.
Ответ №1:
dispose()
ведет себя одинаково, но ввод текста очень отличается, поэтому возможно, что-то не так в этом смысле. В целом мы рекомендуем избегать ввода текста в Dialog
классах, так как это довольно проблематично.