下面显示的是我的课程的简化版本。我在onReceive方法中没有更新小部件TextView时遇到问题。它显示了在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);
}
}
更新回答 – Brombomb 2010-12-13 23:11:46