1

我有一个应用程序,它设置为在接收到广播时将数据库中的条目显示为通知。该数据库条目的 _id 作为广播意图的附加值传递。单击通知时,应用程序应该在活动中显示该数据库条目。

因此,这是来自广播接收器的代码示例:

Long itemID = intent.getLongExtra("com.my.app.receiver.ID", -1);
MyDatabaseHelper helper = new MyDatabaseHelper(context);
Log.i("MyApp", "Received item "+itemID);
Intent pending = new Intent(context, NotifyDisplay.class);
pending.putExtra("com.my.app.NOTIFY", itemID);
PendingIntent onNotifyClick = PendingIntent.getActivity(context,
                    1234567, pending, PendingIntent.FLAG_ONE_SHOT);

从那里,PendingIntent 被抛出到一个通知中,而活动只是getIntent().getLongExtra()用来抓取它。然而,LogCat 显示了一个不同的故事。

07-25 23:45:00.046: I/MyApp(19630): Received item 1
07-25 23:45:05.456: D/dalvikvm(19630): GC_EXPLICIT freed 47K, 52% free 3213K/6599K, external 6314K/7884K, paused 64ms
07-25 23:45:29.705: I/Notification(19630): Displaying task 0
07-25 23:45:29.755: D/AndroidRuntime(19630): Shutting down VM
07-25 23:45:29.755: W/dalvikvm(19630): threadid=1: thread exiting with uncaught exception (group=0x40015560)
07-25 23:45:29.847: E/AndroidRuntime(19630): FATAL EXCEPTION: main

不知何故,该应用程序现在正在尝试(并且失败)显示完全错误的项目。有人可以告诉我为什么在通过时会更改额外的内容吗?

4

1 回答 1

0

我似乎已经解决了这个问题,方法是使用itemID.longValue()我放入的额外内容pending。显然,由于getLongExtra()获取原始值,因此使用 aLong而不是 along会导致问题。

于 2012-08-05T22:28:01.693 回答