0

点击我想启动 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(这是列表中的最后一个),我点击哪个项目并不重要

4

1 回答 1

0

那是因为您在 PendingIntent.getActivity 中设置了PendingIntent.FLAG_CANCEL_CURRENT标志。对于每一行,Android 都会取消前一个待处理的意图,所以最后一个自然会“存活”。也许只需删除该标志即可工作?我对 RemoteViews 没有任何经验,所以不确定如果没有帮助,最好的办法是什么。

于 2012-05-24T13:25:52.453 回答