Development/Android
AppWidget에서 View에 onClick 이벤트 처리 (setOnClickPendingIntent)
독행소년
2013. 8. 27. 14:42
앞선 포스트(AppWidget에서의 View 제어)에서는 언급한 것과 같이 AppWidget에서는 각각의 View객체를 직접 생성해서 이용할 수 없으므로, remoteViews.setInt(View객체ID, "제어메소드명",제어값) 방식으로 View객체를 제어한다.
이 View 객체에 onClick 이벤트를 적용하기 위해서는 setOnClickPendingIntent() 메소드를 이용한다.
void android.widget.RemoteViews.setOnClickPendingIntent(int viewId, PendingIntent pendingIntent) |
일반적으로 아래와 같은 방식으로 이용한다.
remoteViews.setOnClickPendingIntent(R.id.rightButtonsRight, getPendingSelfIntent(context, moveToRightPage));
그리고 getPendingSelfIntent() 메소드의 구현은 아래와 같다.
// 클릭 이벤트 public PendingIntent getPendingSelfIntent(Context context, String action) { Intent intent = new Intent(context, MainWidget.class); intent.setAction(action); return PendingIntent.getBroadcast(context, 0, intent, 0); }
새로운 Intent 객체를 만들어 Action을 설정하고 브로드캐스트리시버를 연결하여 PendingIntent로 반환한다.
그럼 R.id.rightButtonsRight에 해당하는 버튼이 클릭되면 미리 연결했던 PendingIntenet가 호출된다. 이 인텐트가 AppWidget의 onReceiver()로 전달된다.