2010-12-13 12 views
7

以下は、私のクラスの簡略版です。ウィジェットTextViewを更新していないonReceiveメソッドに問題があります。これは、setTextViewTextの前の行に出力されるlogcatの正しい情報を表示します。私は何が間違っているのか分かりませんし、私の髪を引っ張っています(そして私はすでに脱毛しています)。setTextViewTextがウィジェットを更新していません

public class SnowWidget extends AppWidgetProvider { 

public static List<Article> mymtns = new ArrayList<Article>(); 
public static RemoteViews remoteViews; 
public static ComponentName thisWidget; 

public static String amount = ""; 
public static String mtn_name = ""; 
public static String desc = ""; 
public static String condition = ""; 
public static String[] type; 

public static int index = 0; 

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
    int[] appWidgetIds) 
{ 

    remoteViews = new RemoteViews(context.getPackageName(), R.layout.main); 

    thisWidget = new ComponentName(context, SnowWidget.class); 

    // This one works fine 
    remoteViews.setTextViewText(R.id.snowwidget, mtn_name+ "\n"+ amount+"\"\n"+ condition); 

    /* Make the buttons work */ 

Intent next = new Intent(context, SnowWidget.class); 
next.setAction(ACTION_WIDGET_RECEIVER); 

PendingIntent nextPendingIntent = PendingIntent.getBroadcast(context, 0, next, 0); 
remoteViews.setOnClickPendingIntent(R.id.nextMtn, nextPendingIntent); 

/* END - Make the buttons work */ 

    appWidgetManager.updateAppWidget(thisWidget, remoteViews); 
} 

@Override 
public void onReceive(Context context, Intent intent) { 

    // check, if our Action was called 
    if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) { 
     if(mymtns.size() > 0) 
     { 

      // This show up correctly in logcat 
      Log.d("onReceive", "New Info => "+ mtn_name+ "\n"+ amount+"\"\n"+ condition); 
      // This never updates my widget 
      remoteViews.setTextViewText(R.id.snowwidget, mtn_name+ "\n"+ amount+"\"\n"+ condition); 

     } 
    } 

    super.onReceive(context, intent); 
} 

}

+1

更新の回答 – Brombomb

答えて

20

は答えを見つけました。 remoteViews.setTextViewTextを呼び出した後、updateAppWidgetを呼び出してウィジェットを更新する必要があります。私が追加したコードを以下に示します。

AppWidgetManager manager = AppWidgetManager.getInstance(context); 
manager.updateAppWidget(thisWidget, remoteViews); 
+0

ありがとうございました!この問題が頭痛のどれくらいで私を引き起こしたかを記述するのは難しいです。 –

+3

私はこのコードを持っています、それは以前はありましたが、まだ動作していません。何が起こったのか分かりません。 – xdumaine

+0

ここ数行のコードをどこに追加していますか?私はウィジェットを動かすことができないようです。 はPendingIntent.getActivity(文脈、0は、意図、0)の代わりに、 : PendingIntent.getActivity(文脈、0、意図、PendingIntent.FLAG_UPDATE_CURRENT) – Si8

関連する問題