2012-07-31 42 views
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 

不知何故,该应用程序正在尝试(和失败)显示完全错误的项目。有人能告诉我为什么额外的东西正在被改变吗?

+0

我遇到了与字符串相同的问题,而不是longs。希望这里有一个更广泛的解决方案,而不仅仅是一个Long特定的解决方法 – Chicowitz 2014-11-05 00:25:17

回答

0

我似乎用itemID.longValue()作为额外的,我投入pending已经解决了这个问题。显然,由于getLongExtra()抓取原始值,因此引入问题的方法是放入Long而不是long