2012-05-24 3 views
0
통해 엑스트라를 보내는

나는안드로이드 - 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 (수신입니다 (이것은 그 활동에 ID를 전송한다) 내가 DetailsActivity을 시작하려는 태핑 후 루프에서 위젯 항목을 렌더링하는 목록의 마지막 항목입니다.) 어떤 항목을 탭해도 상관 없습니다.

+0

이전 보류 의도를 반복해서 취소하기 때문입니다. 'intentRow'에서 "unique"한 것을 생성하는 것을 고려하십시오. 'Intent # setData (Uri) '에 가짜'Uri'가 전달되면 트릭을 할 것입니다 - 증가하는 경로 나 그런 멍청한 것을 사용하십시오. – Jens

답변

0

이는 PendingIntent.FLAG_CANCEL_CURRENT 플래그를 PendingIntent.getActivity에 설정했기 때문입니다. 각 행에 대해 Android는 이전 보류 의도를 취소하므로 자연히 마지막 행보가 '생존'합니다. 아마 그 깃발을 그냥 제거하여 작동합니까? RemoteViews에 대한 경험이 없으므로 도움이되지 않는다면 무엇이 최선의 일인지 잘 모릅니다.

관련 문제