2012-01-13 6 views
0

위젯 내부의 textView 항목에서 가치를 얻을 수있는 방법이 있습니까? 내 위젯 레이아웃에 2 textViews 있고 내 위젯 업데이트 중 하나를 새 값을 설정하려면 및 두 번째 값을 변경하지 않으려는. 현재로서는이 값을 설정할 때안드로이드는 위젯 내부의 textView 값을 얻습니다.

remoteViews.setTextViewText(R.id.text1, newValue"); 
    widgetManager.updateAppWidget(thisWidget, remoteViews); 

이것은 두 번째 textView의 값을 레이아웃에 정의 된 기본값으로 설정합니다. 두 번째 textView의 값을 변경하지 않거나 두 번째 textView에 값을 가져 오는 방법으로 동일한 값으로 조정할 수 있습니까?

답변

3

언제든지 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); 
    } 

난 그 말이 바랍니다. 내가 무엇에 대해 자세히 설명해야하는지 알려줘.

+0

감사합니다. 나를 위해 일해야한다. – Greg

관련 문제