Проблема диалога LWUIT с dispose()

Я делаю диалог с командой. Эта команда должна закрыть диалоговое окно и вернуться к предыдущей форме, но она не работает должным образом. Когда я нажимаю команду, она закрывает диалог, но форма не возвращается.

Я использую редактор ресурсов. Конечный автомат управляет навигацией приложения.

Код внутри логики команды:

dialog.dispose();
StateMachine.back();

Является ли dispose() методом, который я должен использовать, чтобы закрыть диалоговое окно?

Спасибо за чтение.


person Mun0n    schedule 22.08.2011    source источник
comment
StateMachine — это класс, сгенерированный из редактора ресурсов LWUIT. Это позволяет, среди прочего, управлять навигацией приложения.   -  person Mun0n    schedule 22.08.2011


Ответы (3)


Как сказал Нирмал, удаление диалогового окна переходит в предыдущую форму, поэтому, хотя ваш вызов «back()» работает, как и ожидалось, ваш вызов dispose() нарушает эту логику.

Вы можете переопределить метод postShow для формы, которую вы показываете, и определить случай выхода из диалогового окна (просто включите флаг, когда вам нужно вернуться) и вызвать метод возврата, когда форма отображается в этом состоянии.

person Shai Almog    schedule 24.08.2011

не звоните StateMachine.back() просто используйте dialog.dispose();

person Nirmal- thInk beYond    schedule 23.08.2011
comment
Мне нужно вызвать ‹code›StateMachine.back‹/code›, потому что мне нужно вернуться к предыдущей форме. Я имею в виду, что мне нужно закрыть диалог и в форме вернуться к предыдущей форме. Но кроме этого. Когда я вызываю dispose, диалоговое окно закрывается, но функциональность команд работает плохо. - person Mun0n; 23.08.2011

Есть еще одно решение: попробуйте использовать метод protected void onShowCompleted(), который вы должны реализовать в своем Form. И объявите переменную boolean в вашем Form (например, private boolean isDialogShown; ), затем in the constructor вашего Form установите эту логическую переменную в false, а непосредственно перед кодом открытия Dialog установите ее значение в true. Затем в коде protected void onShowCompleted() проверьте, верно ли оно, и если оно истинно, установите его в false и выполните обратное действие: backForm.showBack();

person Community    schedule 25.10.2011