안드로이드 개발 질문/답변
(글 수 45,052)
일단 열어봐주신분들께 감사합니다..
위젯 개발 관련 질문을 좀 드리고자 하는데요..간단하게 설명드려서..
1.메인화면에 위젯 등록
2.위젯 누르면 config activity 이동
3.config activity에 있는 4종류의 이미지중에 한개를 누르면 메인화면에 있는 위젯layout이 변경및 업데이트됨.
3번째에서 도저히 감이 안오네요..ㅠ_ㅠ
소스 코드 올려봅니다 어떤 조언이라도 감사히 받을게요 도와주세욤..
-----이건 메인위젯입니다----
package com.testwidget;
public class appwidget extends AppWidgetProvider {
static String day2plus;
public void onUpdate
(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
final int count = appWidgetIds.length;
for(int i =0;i < count; i++)
{
int appWidgetId = appWidgetIds[i];
updatecustomAppWidget(context, appWidgetManager, appWidgetId);
}
}
public static void updatecustomAppWidget
(Context context,AppWidgetManager appWidgetManager, int appWidgetId)
{
//
day2plus = "어";
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setTextViewText( R.id.widget_textview,day2plus);
views.setTextColor(R.id.widget_textview, Color.rgb(216, 99, 79));
Intent configintent = new Intent(context,configu.class);
setOnClickIntent(context, views, R.id.widget_textview, configintent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
private static void setOnClickIntent
(Context context, RemoteViews views, int viewId, Intent intent)
{
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
views.setOnClickPendingIntent(viewId, pendingIntent);
}
}
------이건 config입니다-----
package com.testwidget;
public class customwidget extends Activity implements OnClickListener{
ImageView img_custom;
int appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.customwidget);
img_custom = (ImageView)findViewById(R.id.imagelayout1);
img_custom.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
//여기에..서 처리..?
case R.id.imagelayout1 :
}
}
}
2011.03.31 16:01:22
파이님 죄송한데..질문 하나만 더 드릴께요~
메니페스트에 action은 이렇게 추가하였습니다.
<receiver android:name=".SimpleAppWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.custom"/>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_configuration"/>
</receiver>
이렇게 추가를 하고 config activity에서 위젯쪽으로어떻게 액션을 보내주어야할까요..ㅠ_ㅠ
그리구 OnReceive를 구현하였는데..이렇게 해주는게 맞는지요..~
public void onReceive (Context context, Intent intent)
{
final String customwidget = intent.getAction();
if(customwidget .equals(WIDGET_CUSTOM) {
{
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout3);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
}
메니페스트에 action은 이렇게 추가하였습니다.
<receiver android:name=".SimpleAppWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.custom"/>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_configuration"/>
</receiver>
이렇게 추가를 하고 config activity에서 위젯쪽으로어떻게 액션을 보내주어야할까요..ㅠ_ㅠ
그리구 OnReceive를 구현하였는데..이렇게 해주는게 맞는지요..~
public void onReceive (Context context, Intent intent)
{
final String customwidget = intent.getAction();
if(customwidget .equals(WIDGET_CUSTOM) {
{
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout3);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
}




음.. 일단은... 메니페스트에서.. appWidget에 action을 추가하시구요.. 버튼 눌렸을 때, 이 액션을 위젯쪽으로 보내주시면 됩니다.
그래서 appWidget 클래스에서는.. onReceive()에서 이 액션을 받았을때 어떻게 처리할건지 처리하시면 되구요..