从应用程序的主要活动中调用widget的onUpdate方法

时间:2011-02-09 06:18:29

标签: android android-activity widget onupdate

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

如何从活动中触发此方法?看看other questions,我已经能够编写改变其布局的代码,但它似乎没有运行onUpdate(因为我只是留下了空布局而没有在onUpdate期间添加的数据。

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

1 个答案:

答案 0 :(得分:9)

我对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()));