gpt4 book ai didi

Android:如何在创建时更新小部件文本

转载 作者:搜寻专家 更新时间:2023-11-01 08:44:57 24 4
gpt4 key购买 nike

我看到了几个关于如何更新小部件的问题,但没有任何帮助解决我的问题。

我创建了一个小部件,它有一个 TextView ,我想在创建小部件时动态更新它。我有一个在屏幕上添加小部件时调用的配置 Activity 。我将值存储在 sharedpreferences 中并在更新时检索它。问题是小部件没有得到更新。知道怎么做吗?我不想在点击小部件后更新 TextView ,只是让正确的文本在创建时显示。

public class AndroidWidget extends AppWidgetProvider {

@Override

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

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

int[] allWidgetInstancesIds = appWidgetManager
.getAppWidgetIds(thisWidget);
for (int widgetId : allWidgetInstancesIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);

// Create an intent that when received will launch the PopUpActivity
Intent intent = new Intent(context, AndroidWidget.class);
intent.setAction(SHOW_POPUP_DIALOG_ACTION);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId);

PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
widgetId, intent, 0);

// Set up the onClickListener of the widget

remoteViews.setOnClickPendingIntent(R.id.myText, pendingIntent);

SharedPreferences prefs = context.getSharedPreferences(
String.valueOf(widgetId), Context.MODE_PRIVATE);

remoteViews.setTextViewText(R.id.myText,
prefs.getString("storedtext", null));

appWidgetManager.updateAppWidget(widgetId, remoteViews);

}

super.onUpdate(context, appWidgetManager, appWidgetIds);

}

这实际上更新了 TextView ,但仅在单击或创建另一个小部件之后。

最佳答案

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

//set widget id
ComponentName thisWidget = new ComponentName(context, WidgetProvider.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);

for (int i = 0; i < appWidgetIds.length; i++) {
Intent intentService = new Intent(context, WidgetService.class);

intentService.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
intentService.setData(Uri.parse(intentService.toUri(Intent.URI_INTENT_SCHEME)));

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

Intent clickIntent = new Intent(context, MainActivity.class);
PendingIntent clickPI = PendingIntent.getActivity(context, 0, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT);

widget.setTextViewText(R.id.currency, " Dollar");

appWidgetManager.updateAppWidget(appWidgetIds[i], widget);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);

}

这段代码对我有用。你可以试试这个。

关于Android:如何在创建时更新小部件文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29359403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com