setTextViewText不更新小部件

下面显示的是我班的简化版本。我在onReceive方法上遇到了麻烦,该方法没有更新小部件TextView。它在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);

}

}

回答:

找到了答案。调用后,remoteViews.setTextViewText您需要通过调用来更新窗口小部件updateAppWidget。我添加的代码如下所示。

AppWidgetManager manager = AppWidgetManager.getInstance(context);

manager.updateAppWidget(thisWidget, remoteViews);

以上是 setTextViewText不更新小部件 的全部内容, 来源链接: utcz.com/qa/400231.html

回到顶部