프로그래밍/안드로이드

안드로이드 - 바탕화면 위젯의 버튼 리스너 등록방법!

가카리 2014. 1. 1. 21:50
반응형

 

질문내용

위젯에 올려져 있는 버튼을 잡아 동작을 설정해 주려고 합니다.

 

Activity의 경우 findViewById로 설정해줘서 onClicklistener 로 설정해 주면 될텐데..

 

AppWidgetProvider 를 상속 받은 페이지에서 findviewbyId가 먹히질 않네요.

 

이 페이지에서 따로 잡을 수 있는 방법이 있는지 궁금합니다.

 

답변 부탁드립니다.

 

윗분들의 설명을 좀더 자세하게 적어 드리겠습니다.

 

views.setOnClickPendingIntent(R.id.control_next, pendingIntent);

 

여기서 viewsRemoteViews입니다.

 

위젯에서는 Activity와는 다르게 RemoteViews를이용하여레이아웃, 이벤트등을 처리합니다.

 

위 메소드를 사용하기 위해서는 Action을 가지고 있는 Intent의 생성이 필요합니다.

 

Action static변수로 선언해 놓으시면 되구요.

 

 Intent intent = new Intent(ACTION_DELETE); 

 PendingIntent pi = PendingIntent.getBroadcast(widgetContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);  

 

views.setOnClickPendingIntent(R.id.img_delete, pi);

 

이런식으로 Click이벤트를 등록하며

 

AndroidManifest.xml

 

<intent-filter>   

 <action android:name="com.android.widget.message.action.DELETE" />

</intent-filter>

 

이렇게 등록해주셔야 합니다.

 

다시 위젯 메인 소스에서 onReceive메소드를 오버라이드 하신후 

public void onReceive(Context context, Intent intent) {    

 super.onReceive(context, intent);     

String action = intent.getAction();              

  if(action.equals(ACTION_DELETE)){                   }}

 

위와같이 구현하시면 위젯의 컴포넌트에 Click이벤트를 적용하실수 있습니다.     

 

출처 : http://www.androidpub.com/27572

반응형