gpt4 book ai didi

android - 远程 View 更新问题

转载 作者:行者123 更新时间:2023-11-30 04:18:40 26 4
gpt4 key购买 nike

我正在从用户那里获取数据并将其存储到数据库中。我的数据库只需要一个值。因此,每次用户进入数据库时​​,数据库都会更新。我在 AppWidget 的 TextView 中显示这些数据。为此,我使用以下代码:

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

//Get all ids
ComponentName thisWidget = new ComponentName(context.getPackageName(),SmsSchedulerWidget.class.getName());

int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);


//the datas to be shown are fetched from the database
DatabaseManager dbManager = new DatabaseManager(context);
dbManager.open();
contactNumber = dbManager.fetchContactNumber();
Log.i("contactNumber",contactNumber);
date = dbManager.fetchDate();
Log.i("date",date);
message = dbManager.fetchMessage();
Log.i("message",message);
status = dbManager.fetchStatus();
Log.i("status", status);
dbManager.closeDatabase();
//Build the intent to call the service

//it creates the UI for the given app widget
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.schdulesms_appwidget_layout);


remoteViews.setTextViewText(R.id.to_appwidget_saved_data,
contactNumber);
remoteViews.setTextViewText(R.id.date_appwidget_saved_data, date);
remoteViews.setTextViewText(R.id.status_appwidget_saved, status);
remoteViews.setTextViewText(R.id.message_appwidgset_saved_data,
message);

//to start the activity with the click on the layout
Intent clickIntent = new Intent(context.getApplicationContext(),MainActivity.class);
clickIntent.setFlags(clickIntent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent= PendingIntent.getActivity(context, 0, clickIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.full_widget, pendingIntent);

//to update the BroadCast Receiver so that it holds the current values in the layout
Intent updateIntent =new Intent(context,SmsSchedulerWidget.class);

updateIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
updateIntent.setComponent(thisWidget);

PendingIntent pendingIntentForUpdate = PendingIntent.getBroadcast(context, 0, updateIntent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.logoBtn, pendingIntentForUpdate);

appWidgetManager.updateAppWidget(thisWidget, remoteViews);

}

我的应用程序小部件应在单击按钮后以及用户在运行时向数据库中输入新值后自行更新。但是应用程序小部件仅在从屏幕上卸载应用程序小部件然后重新安装后才会自行更新,或者程序重新运行。为什么会这样?单击按钮后如何更新我的应用小部件?????

最佳答案

要手动更新您的 AppWidget,您必须向它发送一个 Broadcast 并在您的 AppWidgetProvideronReceive() 中接收它 方法。在 onReceive() 中,您应该从广播 Intent 中提取所需的所有值,然后手动调用 onUpdate() 方法。希望这会有所帮助。

关于android - 远程 View 更新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9580864/

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