2012-05-24 76 views
0
發送額外

我呈現在一個循環控件項目攻我要開始DetailsActivity後(它應該發送ID到活動)Android的 - 通過的PendingIntent

Cursor currentCursor = dbHelper.getWidgetCursor(); 
for(int k=0; k < currentCursor.getCount(); k++){ 
    currentCursor.moveToPosition(k); 

    RemoteViews rw = new RemoteViews(context.getPackageName(), R.layout.w_calendar_item); 

    Intent intentRow = new Intent(context, DetailsActivity.class); 
    Log.v("a", "index: "+currentCursor.getInt(currentCursor.getColumnIndex(SqlHelper.COLUMN_ID))); 
    intentRow.putExtra("index", currentCursor.getInt(currentCursor.getColumnIndex(SqlHelper.COLUMN_ID))); 
    PendingIntent pendingIntentRow = PendingIntent.getActivity(context, 1, intentRow, PendingIntent.FLAG_CANCEL_CURRENT); 
    rw.setOnClickPendingIntent(R.id.w_li, pendingIntentRow); 

    views.addView(R.id.w_list, rw); 
} 

我的問題是DetailsActivity總是收到指數103(其是列表中的最後一個)無關緊要哪個項目

+0

那是因爲你一次又一次地取消了以前的待決意圖。考慮在「intentRow」中生成「獨特」的內容 - 例如傳遞給'Intent#setData(Uri)'的虛假'Uri'會做訣竅 - 使用一條遞增路徑或一些像這樣的愚蠢行爲。 – Jens

回答

0

這是因爲您在PendingIntent.getActivity中設置了PendingIntent.FLAG_CANCEL_CURRENT標誌。對於每一行Android都會取消以前的待定意圖,所以自然最後一個將「生存」。也許它只是通過刪除該標誌而起作用?我對RemoteViews沒有任何經驗,所以不知道如果沒有幫助,最好的做法是什麼。