From 7db517858be49647d10a0d1bfab0070d8b9f3bee Mon Sep 17 00:00:00 2001 From: Hristo Hristov Date: Fri, 1 Jul 2016 13:20:09 +0300 Subject: [PATCH] TextWatchListener is removed at onDetach so that no exception is thrown if android raise textChanged but we destroyed our android object in onDestroy of edit-text (#2392) --- tests/app/ui/text-view/text-view-tests.ts | 13 +++++++++++++ .../editable-text-base.android.ts | 5 ++++- 2 files changed, 17 insertions(+), 1 deletion(-) 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); }