diff --git a/tests/app/ui/text-view/text-view-tests.ts b/tests/app/ui/text-view/text-view-tests.ts index 4f215faa9..178304bb9 100644 --- a/tests/app/ui/text-view/text-view-tests.ts +++ b/tests/app/ui/text-view/text-view-tests.ts @@ -481,3 +481,16 @@ export var testMemoryLeak = function (done) { textViewTestsNative.typeTextNatively(textView, "Hello, world!"); }, done); } + +export function test_watch_listerer_is_removed_at_onDetach() { + if (platform.isAndroid) { + helper.buildUIAndRunTest(_createTextViewFunc(), (views: Array) => { + let tv = views[0]; + let page = tv.page; + let editText = tv.android; + editText.setText("String"); + page.content = null; + editText.setText("FAIL"); + }); + } +} \ No newline at end of file diff --git a/tns-core-modules/ui/editable-text-base/editable-text-base.android.ts b/tns-core-modules/ui/editable-text-base/editable-text-base.android.ts index a4a28231c..f906d303c 100644 --- a/tns-core-modules/ui/editable-text-base/editable-text-base.android.ts +++ b/tns-core-modules/ui/editable-text-base/editable-text-base.android.ts @@ -107,8 +107,11 @@ export class EditableTextBase extends common.EditableTextBase { } public _onDetached(force?: boolean) { - this._android = undefined; + if (this._android && this._textWatcher) { + this._android.removeTextChangedListener(this._textWatcher); + } + this._android = undefined; super._onDetached(force); }