안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Intent callAct = new Intent(context, testActivity.class);
PendingIntent pi = PendingIntent.getActivity(context, 0, callAct, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget); // 위젯 레이아웃
rv.setOnClickPendingIntent(R.id.mainWidget, pi); //위젯 레이아웃안에서 클릭리스닝 할 id 지정
appWidgetManager.updateAppWidget(appWidgetIds, rv);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
이렇게 프로바이더쪽을 작성했는데.. 왜 위젯을 클릭해도 액티비티가 뜨지 않을까요? -_-ㅋ
매니페스트쪽에는
<receiver android:name=".testProvide" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
으로 선언이 되어 있는 상태구요..onReceive 를 거치지 않고, 바로 하로 싶은데.. 어디가 잘못된걸까요. ㅠ_ㅠ
아까 전엔, super.onUpdate(context, appWidgetManager, appWidgetIds); 를 맨 위로 옮기니깐, 터치 할때 위젯이 뜨더군요!
그런데 아무것도 안 건드리고 다른 클래스 코드 건드리다가 다시 설치하니깐 또 위젯 터치가 안되네요..-_-; 뭔가 문제일까요;;
가족들이 보고 싶습니다.. 엉엉엉...




자답입니다!
저는 R.id.mainWidget(릴레이티브) 를 이용해서 위젯 전체를 감싸주고 있는 부분이니깐, 아무곳이나 터치해도 되겠지 했는데 그게 아니었나 보네요. 제일 최상위에 있는 뷰중에 하나의 id 를 다시 지정해 주니깐 이제 잘 뜹니다.
만세!