친구가 하나의 애플리케이션을 완성 했으므로 이제 친구가 목록보기 방식으로 작업 목록을 표시하는 데 사용할 수있는 애플리케이션 용 위젯 하나를 만들었습니다. 처음에는 그가 위젯을 드래그하여 홈 화면에 설치하면 목록보기 방식으로 작업을 표시 할뿐만 아니라 잘 작동합니다.Listivew 위젯이 자동으로 업데이트되지 않습니다.
문제는 그가 응용 프로그램을 변경 한 다음 다시 홈 화면으로 돌아 왔을 때 변경 사항이 반영되지 않았기 때문입니다. 그는 위젯
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.net.Uri;
import android.util.Log;
import android.widget.RemoteViews;
public class WidgetTaskSchedular extends AppWidgetProvider {
private final String TAG = "CalendarViewSample:"
+ this.getClass().getName();
SharedPreferences sharedprefer;
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if(intent.getAction().equals("update_widget"))
{
int[] appid=new int[1];
sharedprefer=context.getSharedPreferences("TaskWidget", 0);
appid[0]=sharedprefer.getInt("widget_key",0);
Log.i(TAG,"Appwidgetid"+appid[0]);
onUpdate(context, AppWidgetManager.getInstance(context),appid);
}
}
public static String EXTRA_WORD=
"com.capsone.testing.calendar.WORD";
@SuppressWarnings("deprecation")
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int i=0; i<appWidgetIds.length; i++) {
sharedprefer=context.getSharedPreferences("TaskWidget", 0);
SharedPreferences.Editor editor=sharedprefer.edit();
editor.putInt("widget_key", appWidgetIds[i]);
editor.commit();
int a= sharedprefer.getInt("widget_key", 0);
Log.i(TAG,"Sharedpreferencewidgetid:"+a);
//ID=appWidgetIds[i];
Log.i(TAG,"LengthofWidget:"+appWidgetIds.length);
// Log.i(TAG,"TestAppWidget:"+ID);
Intent intentWidgetService=new Intent(context, WidgetService.class);
intentWidgetService.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
intentWidgetService.setData(Uri.parse(intentWidgetService.toUri(Intent.URI_INTENT_SCHEME)));
RemoteViews remoteView=new RemoteViews(context.getPackageName(),
R.layout.widgetlayout);
remoteView.setRemoteAdapter(appWidgetIds[i], R.id.listWidget,
intentWidgetService);
Intent clickIntent=new Intent(context, ActionBarActivity.class);
PendingIntent clickPendingIntent=PendingIntent
.getActivity(context, 0,
clickIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
remoteView.setPendingIntentTemplate(R.id.listWidget, clickPendingIntent);
ComponentName component=new ComponentName(context,WidgetTaskSchedular.class);
appWidgetManager.updateAppWidget(component, remoteView);
}
}
}