Android Wear语言 - Integer ArrayList in Extra comes null



我有一个问题,我不知道为什么会发生。

我从手持设备向可穿戴设备发送一个通知,以知道它何时必须打开一个活动。

从手持设备,我发送一个Integer值的ArrayList:

dataMapRequest.getDataMap().putIntegerArrayList("SELECTED_RISKS", this.selectedRisks);

在WearableListenerService实现中的方法"ondatachchange"中,在我的Wear App中,我以这种方式获得值:

ArrayList<Integer> risksSelected = dataMapItem.getDataMap().getIntegerArrayList("SELECTED_RISKS");

这工作。ArrayList不为空。然后,我把这个ArrayList放到Extras中,将它们设置为Intent并在Wearable:

中显示通知
Intent viewIntent = new Intent(this, MainActivity.class);
Bundle extras = new Bundle();
extras.putIntegerArrayList("SELECTED_RISKS", risksSelected);
viewIntent.putExtras(extras);
PendingIntent pendingViewIntent = PendingIntent.getActivity(this, 0, viewIntent, 0);
...

这也可以。我可以在调试器中看到Extras正在保存数组列表。但问题在这里。

当我尝试加载额外的"MainActivity":

if(extras.containsKey("SELECTED_RISKS") && extras.getIntegerArrayList("SELECTED_RISKS")!=null)

bundle的键是"SELECTED_RISKS",但是它的值是null。

我不知道为什么会这样,你能帮帮我吗?

谢谢

这可能是由于PendingIntent的工作方式。这是一个常见的问题,额外丢失时,使用PendingIntent。如果你之前已经设置了一个具有特定意图的PendingIntent,现在你再次设置它,唯一的区别是额外的,旧的意图将被使用。

查看PendingIntent的文档。具体来说,您可以尝试使用FLAG_UPDATE_CURRENT来强制添加新的附加内容。

相关内容

  • 没有找到相关文章

最新更新