-1

我正在尝试将我的通知意图中的一些数据传递给我的一项活动。但不知何故,该值没有正确填充。

我的通知代码是从哪里调用活动的-

Long rowId = intent.getExtras().getLong(TasksDBAdapter.KEY_ROWID);                   
         //  Status bar notification Code Goes here. 

         NotificationManager mgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
         Intent notificationIntent = new Intent(this, ReminderModificationActivity.class);  
         notificationIntent.putExtra(TasksDBAdapter.KEY_ROWID, rowId);  
         Log.i(TAG,"rowId in doReminderWork" + rowId);
         PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent,PendingIntent.FLAG_ONE_SHOT);  

在这段代码中,Log.i 值给出了正确的 rowId 值,但我在 ReminderModificationActivity.class 中没有得到正确的值。onCreate() 其中有以下代码 -

mRowId = savedInstanceState != null ? savedInstanceState.getLong(TasksDBAdapter.KEY_ROWID) : null ;
        registerButtonListenersAndSetDefaultText();
        Log.i(TAG, "mROwId in onCreate ReminderNotification-->" + getIntent().getExtras().getLong("RowId"));
        //code to check what row id have been passed
        if(getIntent() != null) {                                        
            Bundle extras = getIntent().getExtras();                     
            mRowId = extras != null ? extras.getLong("RowId") : -1;    
            // Do stuff with the row id here
            if(mRowId != -1){
                //code if RowId valid

            }
        }
        Log.i(TAG, "mROwId in onCreate ReminderNotification again-->" + mRowId);

在此代码中,即使我从通知代码中发送了值 4,Log.i 也会返回值 0。请告诉我我在哪里犯了错误。让我知道是否需要任何其他详细信息。

谢谢,雷

4

1 回答 1

0

检查您用来获取数据的密钥。当你设置它时,你使用一个常量变量,但是当你得到它时,你使用一个硬编码的字符串。这样做很容易搞砸。

于 2012-10-28T14:55:47.267 回答