언제든지 onUpdate
을 호출하면 모든 위젯을 업데이트하므로 SharedPreferences를 사용하므로 TextView
을 설정할 때 textView 텍스트를 sharedprefs에 저장 한 다음 환경 설정을 가져올 때 나는 갱신한다. 그리고 나는이 모든 것을 for
루프 내에서합니다.
여기 내 onUpdate
입니다 : 내 클래스 M의
@Override
public void onUpdate(Context context, AppWidgetManager awm, int[] appWidgetIds){
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
int appWidgetId;
for (int i=0;i<appWidgetIds.length;i++){
appWidgetId = appWidgetIds[i];
String widgetLabel = pref.getString("label"+appWidgetId, "");
// I previously saved "widgetLabel" when I created the widget in my
// ConfigurationActivity
M.updateWidget(context, appWidgetId, widgetLabel);
// I put this in another class so it's more manageable.
}
}
:
public static void updateWidget(Context context, int appWidgetId, String widgetLabel){
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit();
RemoteViews updateViews;
int layoutId = R.layout.layout;
int viewId = R.id.layout;
updateViews = new RemoteViews(context.getPackageName(),
layoutId);
updateViews.setTextViewText(R.id.widgetlabel, widgetLabel);
editor.putString("label"+appWidgetId, widgetLabel);
editor.commit();
Intent intent = new Intent(context, ClickAction.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
updateViews.setOnClickPendingIntent(viewId, pendingIntent);
AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId, updateViews);
}
난 그 말이 바랍니다. 내가 무엇에 대해 자세히 설명해야하는지 알려줘.
감사합니다. 나를 위해 일해야한다. – Greg