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

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

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

最佳答案

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

关于android - 从应用程序的主要 Activity 中调用小部件的onUpdate方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4941898/

10-10 03:54