From 5c076de8560f71b59cf34124f47ebeafdc902658 Mon Sep 17 00:00:00 2001 From: Nathan Walker Date: Tue, 11 Aug 2020 22:29:11 -0700 Subject: [PATCH] fix(android): list picker getTextColor api level issue (#8755) closes https://github.com/NativeScript/NativeScript/issues/7860 --- nativescript-core/package.json | 2 +- .../ui/list-picker/list-picker.android.ts | 28 +++++++++++++------ package.json | 2 +- tns-core-modules-package/package.json | 2 +- tns-platform-declarations/package.json | 2 +- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/nativescript-core/package.json b/nativescript-core/package.json index 43252ed81c..8742a66dd5 100644 --- a/nativescript-core/package.json +++ b/nativescript-core/package.json @@ -3,7 +3,7 @@ "main": "index", "types": "index.d.ts", "description": "NativeScript Core Modules", - "version": "6.5.13", + "version": "6.5.15", "homepage": "https://www.nativescript.org", "repository": { "type": "git", diff --git a/nativescript-core/ui/list-picker/list-picker.android.ts b/nativescript-core/ui/list-picker/list-picker.android.ts index 81df1b80ed..3529b3fb1e 100644 --- a/nativescript-core/ui/list-picker/list-picker.android.ts +++ b/nativescript-core/ui/list-picker/list-picker.android.ts @@ -68,11 +68,21 @@ function getEditText(picker: android.widget.NumberPicker): android.widget.EditTe let selectorWheelPaintField: java.lang.reflect.Field; function getSelectorWheelPaint(picker: android.widget.NumberPicker): android.graphics.Paint { if (!selectorWheelPaintField) { - selectorWheelPaintField = picker.getClass().getDeclaredField("mSelectorWheelPaint"); - selectorWheelPaintField.setAccessible(true); + try { + selectorWheelPaintField = picker.getClass().getDeclaredField("mSelectorWheelPaint"); + if (selectorWheelPaintField) { + selectorWheelPaintField.setAccessible(true); + } + } catch (err) { + // mSelectorWheelPaint is not supported on api level + } } - return selectorWheelPaintField.get(picker); + if (selectorWheelPaintField) { + return selectorWheelPaintField.get(picker); + } + + return null; } export class ListPicker extends ListPickerBase { @@ -98,9 +108,7 @@ export class ListPicker extends ListPickerBase { // api28 and lower uses reflection to retrieve and manipulate // android.graphics.Paint object; this is no longer allowed on newer api levels but // equivalent public methods are exposed on api29+ directly on the native widget - if (sdkVersion() < 29) { - this._selectorWheelPaint = getSelectorWheelPaint(nativeView); - } + this._selectorWheelPaint = getSelectorWheelPaint(nativeView); const formatter = new Formatter(this); nativeView.setFormatter(formatter); @@ -172,7 +180,11 @@ export class ListPicker extends ListPickerBase { return this._selectorWheelPaint.getColor(); } - return this.nativeView.getTextColor(); + if (this.nativeView && this.nativeView.getTextColor) { + return this.nativeView.getTextColor(); + } else { + return 0; + } } [colorProperty.setNative](value: number | Color) { const color = value instanceof Color ? value.android : value; @@ -187,7 +199,7 @@ export class ListPicker extends ListPickerBase { if (editText) { editText.setTextColor(color); } - } else { + } else if (this.nativeView && this.nativeView.setTextColor) { // api29 and higher native implementation sets // both wheel color and input text color with single call this.nativeView.setTextColor(color); diff --git a/package.json b/package.json index 75a6c863e9..b66fecccdd 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "NativeScript", "description": "NativeScript Core Modules", "homepage": "https://www.nativescript.org", - "version": "6.5.13", + "version": "6.5.15", "repository": { "type": "git", "url": "https://github.com/NativeScript/NativeScript" diff --git a/tns-core-modules-package/package.json b/tns-core-modules-package/package.json index cea94f7e9f..588e344779 100644 --- a/tns-core-modules-package/package.json +++ b/tns-core-modules-package/package.json @@ -3,7 +3,7 @@ "main": "index", "types": "index.d.ts", "description": "NativeScript Core Modules", - "version": "6.5.13", + "version": "6.5.15", "homepage": "https://www.nativescript.org", "repository": { "type": "git", diff --git a/tns-platform-declarations/package.json b/tns-platform-declarations/package.json index bf5c552279..a5d2037850 100644 --- a/tns-platform-declarations/package.json +++ b/tns-platform-declarations/package.json @@ -1,6 +1,6 @@ { "name": "tns-platform-declarations", - "version": "6.5.13", + "version": "6.5.15", "description": "Platform-specific TypeScript declarations for NativeScript for accessing native objects", "main": "", "scripts": {