Codename One中如何避免LocalNotification的Id在ToastBar中显示?
原因说明
Codename One 中通知ID是调度本地通知的必填参数,不可省略setId调用,否则会抛出你遇到的非法参数异常。而点击通知触发的ID弹窗是框架的默认行为:未自定义通知点击逻辑时,系统会自动将通知ID作为内容弹出到ToastBar。
解决方法
方案一(推荐):注册本地通知点击监听器,消费点击事件
你只需要在应用初始化逻辑(比如主类的init()/start()方法)中注册LocalNotificationListener,主动处理通知点击事件,就能阻止默认的ID弹出逻辑,示例代码如下:
Display.getInstance().setLocalNotificationListener((LocalNotification ln) -> { // 此处编写点击通知后的自定义业务逻辑,比如跳转到对应功能页面 return true; // 返回true代表事件已被当前逻辑消费,不再走框架默认处理流程 });
方案二:使用无业务含义的通知ID
如果你不需要通过通知ID做业务区分,也可以将setId的参数替换为无意义的唯一标识,就算触发默认弹窗也不会出现异常内容:
// 示例1:使用UUID生成唯一ID ln.setId(UUID.randomUUID().toString()); // 示例2:使用自定义数字编号作为ID ln.setId("geofence_notify_001");
内容的提问来源于stack exchange,提问作者fnklstn
相关产品推荐
相关产品推荐

