我在点击后在循环中渲染窗口小部件项目我想启动DetailsActivity(它应该将ID发送到该活动)
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 :(得分:0)
这是因为您在PendingIntent.getActivity中设置了PendingIntent.FLAG_CANCEL_CURRENT标志。对于每一行,Android将取消之前的待定意图,因此最后一个将自然“生存”。也许它只是删除那个标志?我对RemoteViews没有任何经验,所以不确定如果没有帮助,最好的办法是什么。