질문내용
위젯에 올려져 있는 버튼을 잡아 동작을 설정해 주려고 합니다.
Activity의 경우 findViewById로 설정해줘서 onClicklistener 로 설정해 주면 될텐데..
AppWidgetProvider 를 상속 받은 페이지에서 findviewbyId가 먹히질 않네요.
이 페이지에서 따로 잡을 수 있는 방법이 있는지 궁금합니다.
답변 부탁드립니다.
윗분들의 설명을 좀더 자세하게 적어 드리겠습니다.
views.setOnClickPendingIntent(R.id.control_next, pendingIntent);
여기서 views는 RemoteViews입니다.
위젯에서는 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이벤트를 적용하실수 있습니다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - 브로드캐스트 리시버 관련 인텐트의 액션들 (0) | 2014.01.05 |
---|---|
안드로이드 - URI parser에서 분석되는 방법 (0) | 2014.01.05 |
안드로이드 - SD카드 마운트-탈착에 관한 인텐트 (0) | 2014.01.05 |
안드로이드 - arraylist를 인텐트로 넘기는 방법! (0) | 2014.01.02 |
안드로이드 - ContentResolver (0) | 2013.12.31 |
안드로이드 - App Widget 이야기 (0) | 2013.12.31 |
안드로이드 - Android AppWidget, RemoteViews and CheckBox (0) | 2013.12.31 |
안드로이드 - DataBase 변경 시에 ContentObserver 이용하여 check 하는 방법. (0) | 2013.12.31 |