꿈꾸는 시스템 디자이너

AppWidget에서 View에 onClick 이벤트 처리 (setOnClickPendingIntent) 본문

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()로 전달된다.


Comments