마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AppWidget PendingIntent 관련하여 질문드립니다.

0 추천

안녕하세요 앱위젯을 만들고있는 도중 모르겠는 부분이 있어 질문을 드립니다.

바쁘시더라도 읽어주시고 조언 주시면 감사하겠습니다.

소스코드의 일부분을 올렸습니다.

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
 
    appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, getClass()));
    super.onUpdate(context, appWidgetManager, appWidgetIds);
 
 
    final int N = appWidgetIds.length;
    for (int i = 0; i < N; i++) {
 
        Intent intentToOn = new Intent();
        intentToOn.setAction("action.on");
        intentToOn.putExtra("num", ""+appWidgetId); 
        PendingIntent pending1 = PendingIntent.getBroadcast(context, 0, intentToOn, PendingIntent.);
        views.setOnClickPendingIntent(R.id.btn_on, pending1);
 
    }
}
 
이런식으로 구현하여 클릭했을경우 appWidgetId값을 넘겨주도록 만들었습니다.
 
한개의 위젯만 설치했을때는 동작을 잘합니다.
 
하지만 동일한 두개의 위젯을 설치했을때는 마지막 appWidgetId 값만을 넘겨줍니다.
 
1번 위젯을 클릭해도 2번위젯을 클릭해도 동일한 값을 넘겨주는데
 
이걸 각각 따로 자기의 appWidgetId값을 넘겨주도록 변경하려면 어떻게 해야 할까요?
 
도움주시면 감하겠습니다.
bellfe0402 (1,770 포인트) 님이 2015년 7월 8일 질문

1개의 답변

0 추천
 
채택된 답변
PendingIntent의 마지막 인자값을 PendingIntent.FLAG_UPDATE_CURRENT로 해줘보시고,

안되시면 intentToOn.setData(Uri.parse(appWidgetId));로 넘겨서 처리해 보세요.
libre2k (7,420 포인트) 님이 2015년 7월 9일 답변
bellfe0402님이 2015년 7월 9일 채택됨
intentToOn.setData(Uri.parse(appWidgetId)); 내용을 추가하면
클릭해도 동작하지 않습니다. 다시 주석처리하니 동작하네요ㅠ 왜그런걸까요?
문제를 해결하였습니다. 많은도움이 되었습니다. 감사합니다.
...