我知道这个问题已经被回答过多次,但我没有发现任何一个令人满意,而且肯定不优雅。
问题是 OnItemSelected 不仅在用户选择某个项目时被触发,而且在以编程方式设置选择时也会被触发。
一些答案建议在程序员为微调器设置值时设置一个标志。然而,有时其他 Android 代码会在您的代码之外设置该值。
android 设置该值的常见位置是在微调器实例化时。一些答案解决了这个特定问题。然而,Android 有很多地方会崩溃并重新实例化旋转器。追踪所有这些人并不优雅。
所以问题是:如何将 OnItemSelectedListener 代码仅附加到用户与 UI 交互所做的选择?
下一步是扩展 Spinner 并开始覆盖方法,但这当然意味着弄乱 API(我不想这样做,或者我至少想让其他用户与我一起处理它)
我正在使用 MacCatalyst 将 iOS/iPadOS 应用程序移植到 MacOS。该应用程序以所有方式使用 CloudKit 和函数,除了一个:当从另一台设备提交 CloudKit 更新时,不会在 MacOS 版本上调用UIApplicationDelegate方法 。didReceiveRemoteNotification
在应用程序中起作用的事情:
CKDatabaseOperation向 CloudKit提交包括更新和订阅在内的 sUIApplicationDelegate方法在调用时didRegisterForRemoteNotificationsWithDeviceToken触发并UIApplication.isRegisteredForRemoteNotifications返回 trueUIApplication.registerForRemoteNotificationsCKSubscription.NotificationInfo调用在 MacOS 中正确显示的警报通知UNUserNotificationCenterDelegate方法,willPresent当调用警报通知并且应用程序在前台时didReceiveRemoteNotification 在 iOS 和 iPad(物理设备)上有没有人在使用 MacCatalyst 时调用过UIApplicationDelegate方法didReceiveRemoteNotification?
更新:应用程序最终didReceiveRemoteNotification在发送更新 30 分钟后触发该方法,但在其他更新中,该方法即使在数小时后也不会触发。有任何想法吗?