【问题标题】:Call widget's onUpdate method from the app's main activity从应用程序的主要活动中调用小部件的 onUpdate 方法
【发布时间】:2011-06-23 22:28:08
【问题描述】:

我正在开发一个包含小部件的 Android 应用程序。应用程序的主界面是一个简单的活动,但用户可以在活动中做的一些事情使得有必要更新小部件 - 即运行其 onUpdate 方法。

如何从活动中触发此方法?查看otherquestions,我已经能够编写更改其布局的代码,但它似乎没有运行 onUpdate(因为我只剩下空布局并且没有添加任何数据在 onUpdate 期间)。

非常感谢任何想法或代码示例!

【问题讨论】:

    标签: android android-activity widget onupdate


    【解决方案1】:

    我对 Android 还是很陌生,但我通过三个步骤完成了这项工作:

    首先,我将 AppWidgetProvider.onUpdate 的内容放入一个方法 (myUpdate(Context))。

    其次,我将 AppWidgetProvider.onReceive() 覆盖为如下所示:

    public void onReceive(final Context context, final Intent intent)
    {
        super.onReceive(context, intent);
    
        if (MY_PUBLIC_STATIC_STRING.equals(intent.getAction()))
        {
            myUpdate(context);
        }
    }
    

    第三,从我的其他活动中,我只是发送了一个通用广播,其中包含针对意图设置的操作。

    Intent updateWidgetIntent = new Intent(context, MyWidget.class);
    updateWidgetIntent.setAction(MyWidget.MY_PUBLIC_STATIC_STRING);
    context.sendBroadcast(updateWidgetIntent);
    

    这样做的缺点是必须自己从上下文和应用小部件 id 中找到 AppWidgetManager,而不是 onUpdate 为您提供的漂亮界面。所以我怀疑这是正确的方法。祝你好运。

    myUpdate(Context) 像这样开始:

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
    int[] appWidgetIds =
        appWidgetManager.getAppWidgetIds(new ComponentName(context, this.getClass()));
    

    【讨论】:

      猜你喜欢
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多