在Xamarin Android中的App Activity中更新Widege内部文本视图



我有一个窗口小部件,该小部件包含在文本视图中。从mainaactivity我试图更新小部件数据,因为从主要活动中添加了更多数据,我希望小部件刷新

class TodoWidget : AppWidgetProvider
{
..............
    private void SetTextViewText(RemoteViews widgetView)
    {
       // widgetView.SetTextViewText(Resource.Id.widgetMedium, new TodoDBR().GetAllRecordsForWidget());
        widgetView.SetTextViewText(Resource.Id.widgetSmall, new TodoDBR().GetAllRecordsForWidget());
    }

在主要活动中,添加数据后,我试图调用方法以更新小部件,但它不起作用

AppWidgetManager appWidgetManager = AppWidgetManager.GetInstance(this.Context);
        var manager = AppWidgetManager.GetInstance(this.Context);
        var componentName = new ComponentName(Context.PackageName, Java.Lang.Class.FromType(typeof(TodoWidget)).Name);
        int[] appWidgetIds = appWidgetManager.GetAppWidgetIds(componentName);
            appWidgetManager.NotifyAppWidgetViewDataChanged(appWidgetIds, Resource.Layout.TodoWidget);

它没有更新我的小部件

如果找到了答案,我的自我只不过是其他任何人都有相同问题的是解决方案

RemoteViews remoteViews = new RemoteViews(Context.PackageName, Resource.Layout.TodoWidget);
        ComponentName thisWidget = new ComponentName(this.Context, Java.Lang.Class.FromType(typeof(TodoWidget)).Name);
        remoteViews.SetTextViewText(Resource.Id.widgetSmall, new TodoDBR().GetAllRecordsForWidget());
        AppWidgetManager.GetInstance(this.Context).UpdateAppWidget(thisWidget, remoteViews);

无法投票,但是谢谢 - 4年后。终于对我有用。对于某人,从Main或Service调用更新小部件:

呼叫更新:任何地点,服务计时器或主进等:

public void updateWidgets()
{
    Intent brIntent = new Intent(AppWidgetManager.ActionAppwidgetUpdate);
    SendBroadcast(brIntent);
}

recive更新:widgetfile.cs:

public override void OnReceive(Context context, Intent intent) {
    RemoteViews remoteViews = new RemoteViews(Context.PackageName, Resource.Layout.**TodoWidget**);
    ComponentName thisWidget = new ComponentName(context, Java.Lang.Class.FromType(typeof(**TodoWidget**)));
    remoteViews.SetTextViewText(Resource.Id.widgetSmall, "Hello world");
    AppWidgetManager.GetInstance(this.Context).UpdateAppWidget(thisWidget, remoteViews);
}

接下来是.setAction()

最新更新