2012-07-31 44 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