2016-04-27 7 views
1

Auf einigen meiner Formulare registriere ich einen Sensor-Listener, wenn ich das Formular mithilfe der onShow() -Methode öffne. Ich möchte diese Zuhörer abmelden, wenn ich zu einer anderen Form gehe.Gibt es einen Begleiter für die Form.onShow() -Methode, die ich verwenden kann, wenn ein Formular ausgeblendet ist?

Ich fand die onShow() -Methode für alles, was ich tun muss, wenn ein Formular angezeigt wird, aber ich sehe keine onHide() -Methode oder irgendeine Methode, die ich für ein Formular nach sich selbst aufräumen kann. Ich könnte den Cleanup-Code in die Navigationsbefehle einfügen, aber sie gehören wirklich zum Formular. Gibt es eine Methode, die ich verwenden kann, die ich übersehen habe?

Antwort

1

Normalerweise müssen Sie das Beenden eines Formulars nicht beachten, es sei denn, Sie befinden sich in einer GUI-Builder-Anwendung, in der die Navigation möglicherweise implizit ist. Da Sie immer newForm.show() aufrufen, können Sie dort die für den Exit benötigte Implementierungslogik ausführen.

Sie können jedoch immer deinitilize() überschreiben, um dies zu tun. Beachten Sie, dass es möglicherweise aufgerufen wird, wenn Sie eine Dialog zeigen, sodass initComponent() möglicherweise ein besseres Gegenstück als onShow() ist.

Beachten Sie, dass dies nur für den visuellen Aspekt eines Form gilt. Sie müssen außerdem die Logik in Ihrer stop()-Methode implementieren, die aufgerufen wird, wenn Ihre App minimiert wird, und in der start()-Methode, die beim Wiederherstellen der App aufgerufen wird (beide in der Hauptklasse Ihrer App).

+0

Es stimmt, dass Sie normalerweise nicht wissen müssen, dass Sie ein 'Formular' verlassen. Da ich einen Zuhörer von einem nativen Sensor abmelde, ist meins ein Sonderfall. Die 'newForm.show()' Methode ist ein lausiger Ort, um dies zu tun, da das nicht sein kann, wie das Formular versteckt wird. Im objektorientierten Denken ist das Formular verantwortlich für die Registrierung/Abmeldung des Zuhörers. Daher ist der beste Ort, um diesen Code zu platzieren, eine Form.onHide() -Methode, die sicher aufgerufen wird, wenn das Formular ausgeblendet wird. (Ich habe bereits Code in meinen Methoden 'start()' und 'stop()', die auf meine Methoden start() und stop() in meinen Formularen verweisen.) – MiguelMunoz

+0

Haben Sie bemerkt, dass er 'deinitialize()'/'initComponent vorgeschlagen hat?() 'beides können Sie auch pro Komponente tun? –

+0

Eigentlich könnte dinitialize() funktionieren. Ich versuche es mal. – MiguelMunoz

Verwandte Themen