Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.
This repository was archived by the owner on May 1, 2024. It is now read-only.

Android Picker handling null #1404

@thomasphillipsgb

Description

@thomasphillipsgb

Hi all! Within my app, I have extended the Picker class and added an IsRequired property. If this is false, it does ItemsSource.Insert(0, null). This is all working as intended on UWP and iOS, however Android throws an exception:
java.lang.IllegalArgumentException: text cannot be null
when trying to select something.

Steps to Reproduce:

  1. Add a picker to a page
  2. Set the ItemsSource = new List { null, new object() }
  3. Run the app in Android
  4. Tap the Picker

Expected Behavior:
Picker renders with a blank value selected within the modal

Actual Behavior:
java.lang.IllegalArgumentException: text cannot be null
thrown

Basic Information:

  • Version with issue: 2.5.0.91635
  • Last known good version: -
  • IDE: Visual Studio 2017 Enterprise
  • Platform Target Frameworks:
    • iOS: 11.2
    • Android: 8.0
    • UWP: 10.0; Buid 15063

LogCat trace:
.
.
.
12-14 15:49:37.316 3837 4064 D ConnectivityService: sending notification for NetworkRequest [ id=1085, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
12-14 15:49:37.316 3837 4064 D ConnectivityService: sending notification CAP_CHANGED for NetworkRequest [ id=1085, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
12-14 15:49:37.317 3837 4064 D ConnectivityService: sending notification for NetworkRequest [ id=1086, legacyType=-1, [ Transports: WIFI Capabilities: NOT_RESTRICTED&TRUSTED&NOT_VPN] ]
12-14 15:49:37.317 3837 4064 D ConnectivityService: sending notification CAP_CHANGED for NetworkRequest [ id=1086, legacyType=-1, [ Transports: WIFI Capabilities: NOT_RESTRICTED&TRUSTED&NOT_VPN] ]
12-14 15:49:37.317 3837 4064 D ConnectivityService: sending notification for NetworkRequest [ id=1087, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
12-14 15:49:37.317 3837 4064 D ConnectivityService: sending notification CAP_CHANGED for NetworkRequest [ id=1087, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
12-14 15:49:37.317 3837 4064 D ConnectivityService: sending notification for NetworkRequest [ id=1088, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
12-14 15:49:37.318 3837 4064 D ConnectivityService: sending notification CAP_CHANGED for NetworkRequest [ id=1088, legacyType=-1, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
12-14 15:49:37.323 3837 6926 D SamsungAlarmManager: Cancel Alarm calling from uid:10026 pid :5349 / op:PendingIntent{c5c768a: PendingIntentRecord{bb4ebc8 com.google.android.gms broadcastIntent}}
12-14 15:49:37.327 3837 6926 I SamsungAlarmManager: setLocked to kernel - T:2 / 20171214T154945, SetElapsed=238188637, nowELAPSED=238180543
12-14 15:49:37.344 3837 3862 D DevicePolicyManagerService: PfW getPlayForWorkProxy() 0
12-14 15:49:37.347 3837 3862 D DevicePolicyManagerService: PfW getPlayForWorkProxy() flags & FLAG_ALLOW_PROXY_FOR_PFW 0
12-14 15:49:37.347 3837 3862 D DevicePolicyManagerService: PfW getPlayForWorkProxy() flag 0 does not allow PfW
12-14 15:49:37.348 12054 12143 I : Saving WTK articles in database. Count: 18
12-14 15:49:37.363 3837 5475 D SamsungAlarmManager: setInexact Intent (T:2/F:0/AC:false) 20171214T155002 - CU:10026/CP:5349
12-14 15:49:37.369 3837 5473 D DevicePolicyManagerService: PfW getPlayForWorkProxy() 0
12-14 15:49:37.372 3837 5473 D DevicePolicyManagerService: PfW getPlayForWorkProxy() flags & FLAG_ALLOW_PROXY_FOR_PFW 0
12-14 15:49:37.372 3837 5473 D DevicePolicyManagerService: PfW getPlayForWorkProxy() flag 0 does not allow PfW
12-14 15:49:37.376 3837 5512 D SamsungAlarmManager: Cancel Alarm calling from uid:10026 pid :5349 / op:PendingIntent{a937156: PendingIntentRecord{bb4ebc8 com.google.android.gms broadcastIntent}}
12-14 15:49:37.397 3837 4022 D CompatibilityInfo: mCompatibilityFlags - 0
12-14 15:49:37.397 3837 4022 D CompatibilityInfo: applicationDensity - 420
12-14 15:49:37.397 3837 4022 D CompatibilityInfo: applicationScale - 1.0
12-14 15:49:37.447 3837 4677 D SamsungAlarmManager: setInexact Intent (T:2/F:0/AC:false) 20171214T155002 - CU:10026/CP:5349
12-14 15:49:37.593 3837 4706 D MountService: MountService getExternalStorageMountMode : 3
12-14 15:49:37.593 3837 4706 D MountService: MountService getExternalStorageMountMode : 3
12-14 15:49:37.593 3837 4706 D MountService: MountService getExternalStorageMountMode : final mountMode=3, uid : 10149, packageName : com.android.chrome
12-14 15:49:37.611 12263 12263 E Zygote : v2
12-14 15:49:37.611 12263 12263 I libpersona: KNOX_SDCARD checking this for 10149
12-14 15:49:37.611 12263 12263 I libpersona: KNOX_SDCARD not a persona
12-14 15:49:37.612 3837 4706 I ActivityManager: Start proc 12263:com.android.chrome:privileged_process0/u0a149 for service com.android.chrome/org.chromium.content.app.PrivilegedProcessService0
12-14 15:49:37.613 12263 12263 E Zygote : accessInfo : 0
12-14 15:49:37.614 12263 12263 W SELinux : SELinux selinux_android_compute_policy_index : Policy Index[2], Con:u:r:zygote:s0 RAM:SEPF_SECMOBILE_7.0_0009, [-1 -1 -1 -1 0 1]
12-14 15:49:37.616 12263 12263 I SELinux : SELinux: seapp_context_lookup: seinfo=chrome, level=s0:c512,c768, pkgname=com.android.chrome:privileged_process0
12-14 15:49:37.663 12263 12263 D TimaKeyStoreProvider: TimaKeyStore is not enabled: cannot add TimaSignature Service and generateKeyPair Service
12-14 15:49:37.666 3837 5475 D CompatibilityInfo: mCompatibilityFlags - 0
12-14 15:49:37.667 3837 5475 D CompatibilityInfo: applicationDensity - 420
12-14 15:49:37.667 3837 5475 D CompatibilityInfo: applicationScale - 1.0
12-14 15:49:37.667 3837 5475 I ActivityManager: DSS on for com.android.chrome and scale is 1.0
12-14 15:49:37.669 3837 5475 D CompatibilityInfo: mCompatibilityFlags - 0
12-14 15:49:37.669 3837 5475 D CompatibilityInfo: applicationDensity - 420
12-14 15:49:37.669 3837 5475 D CompatibilityInfo: applicationScale - 1.0
12-14 15:49:37.676 3837 5475 D CompatibilityInfo: mCompatibilityFlags - 0
12-14 15:49:37.676 3837 5475 D CompatibilityInfo: applicationDensity - 420
12-14 15:49:37.676 3837 5475 D CompatibilityInfo: applicationScale - 1.0
12-14 15:49:37.700 12263 12263 I ResourcesManager: updateResourcesForOpenThemeChange for Desktop mode
12-14 15:49:37.733 12263 12263 I cr_ChildProcessService: Creating new ChildProcessService pid=12263
12-14 15:49:37.890 12263 12276 I cr_LibraryLoader: Time to load native libraries: 128 ms (timestamps 7630-7758)
12-14 15:49:37.890 12263 12276 I cr_LibraryLoader: Using linker: org.chromium.base.library_loader.ModernLinker
12-14 15:49:37.892 12263 12276 I chromium: [INFO:library_loader_hooks.cc(46)] Chromium logging enabled: level = 0, default verbosity = 0
12-14 15:49:37.892 12263 12276 I cr_LibraryLoader: Expected native library version number "62.0.3202.84", actual native library version number "62.0.3202.84"
12-14 15:49:37.902 10961 10961 D Mono : DllImport attempting to load: '/system/lib/liblog.so'.
12-14 15:49:37.904 10961 10961 D Mono : DllImport loaded library '/system/lib/liblog.so'.
12-14 15:49:37.904 10961 10961 D Mono : DllImport searching in: '/system/lib/liblog.so' ('/system/lib/liblog.so').
12-14 15:49:37.904 10961 10961 D Mono : Searching for '__android_log_print'.
12-14 15:49:37.904 10961 10961 D Mono : Probing '__android_log_print'.
12-14 15:49:37.904 10961 10961 D Mono : Found as '_android_log_print'.
12-14 15:49:37.916 10961 10961 I MonoDroid: UNHANDLED EXCEPTION:
12-14 15:49:37.937 10961 10961 I MonoDroid: Java.Lang.RuntimeException: text cannot be null
12-14 15:49:37.937 10961 10961 I MonoDroid: at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <912e68ad383941889349a57c19f9bba0>:0
12-14 15:49:37.937 10961 10961 I MonoDroid: at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00069] in :0
12-14 15:49:37.937 10961 10961 I MonoDroid: at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0002a] in :0
12-14 15:49:37.937 10961 10961 I MonoDroid: at Android.Widget.NumberPicker.SetDisplayedValues (System.String[] displayedValues) [0x00029] in <96d947b3b8134b57948bf39422274389>:0
12-14 15:49:37.937 10961 10961 I MonoDroid: at Xamarin.Forms.Platform.Android.PickerRenderer.OnClick () [0x00075] in D:\agent_work\2\s\Xamarin.Forms.Platform.Android\Renderers\PickerRenderer.cs:110
12-14 15:49:37.937 10961 10961 I MonoDroid: at Xamarin.Forms.Platform.Android.PickerRenderer+PickerListener.OnClick (Android.Views.View v) [0x00010] in D:\agent_work\2\s\Xamarin.Forms.Platform.Android\Renderers\PickerRenderer.cs:192
12-14 15:49:37.938 10961 10961 I MonoDroid: at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View
(System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_v) [0x0000f] in <96d947b3b8134b57948bf39422274389>:0
12-14 15:49:37.938 10961 10961 I MonoDroid: at (wrapper dynamic-method) System.Object:7369e5d1-8007-4ac2-95b1-15d88f84f186 (intptr,intptr,intptr)
12-14 15:49:37.938 10961 10961 I MonoDroid: --- End of managed Java.Lang.RuntimeException stack trace ---
12-14 15:49:37.938 10961 10961 I MonoDroid: java.lang.IllegalArgumentException: text cannot be null
12-14 15:49:37.938 10961 10961 I MonoDroid: at android.graphics.Paint.measureText(Paint.java:2191)
12-14 15:49:37.938 10961 10961 I MonoDroid: at android.widget.NumberPicker.tryComputeMaxWidth(NumberPicker.java:1314)
12-14 15:49:37.938 10961 10961 I MonoDroid: at android.widget.NumberPicker.setDisplayedValues(NumberPicker.java:1507)
12-14 15:49:37.938 10961 10961 I MonoDroid: at md5b60ffeb829f638581ab2bb9b1a7f4f3f.PickerRenderer_PickerListener.n_onClick(Native Method)
12-14 15:49:37.938 10961 10961 I MonoDroid: at md5b60ffeb829f638581ab2bb9b1a7f4f3f.PickerRenderer_PickerListener.onClick(PickerRenderer_PickerListener.java:30)
12-14 15:49:37.938 10961 10961 I MonoDroid: at android.view.View.performClick(View.java:6261)
12-14 15:49:37.938 10961 10961 I MonoDroid: at android.widget.TextView.performClick(TextView.java:11180)
12-14 15:49:37.938 10961 10961 I MonoDroid: at android.view.View$PerformClick.run(View.java:23748)
12-14 15:49:37.938 10961 10961 I MonoDroid: at android.os.Handler.handleCallback(Handler.java:751)
12-14 15:49:37.938 10961 10961 I MonoDroid: at android.os.Handler.dispatchMessage(Handler.java:95)
12-14 15:49:37.938 10961 10961 I MonoDroid: at android.os.Looper.loop(Looper.java:154)
12-14 15:49:37.938 10961 10961 I MonoDroid: at android.app.ActivityThread.main(ActivityThread.java:6776)
12-14 15:49:37.938 10961 10961 I MonoDroid: at java.lang.reflect.Method.invoke(Native Method)
12-14 15:49:37.938 10961 10961 I MonoDroid: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
12-14 15:49:37.938 10961 10961 I MonoDroid: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
12-14 15:49:37.938 10961 10961 I MonoDroid:
.
.
.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions