【问题标题】:How to use onAppWidgetOptionsChanged() in a widget?如何在小部件中使用 onAppWidgetOptionsChanged()?
【发布时间】:2012-12-27 23:29:19
【问题描述】:

我想在每次调整大小时更新我的​​小部件。我发现这是在:

onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions)

但我不知道如何更新其中的小部件。我试图通过调用我放入onUpdate() 的所有内容来重绘小部件,但它不起作用。如何使用捆绑包?

【问题讨论】:

    标签: android


    【解决方案1】:

    我想在每次调整大小时更新我的​​小部件。

    酷!

    我发现这是在onAppWidgetOptionsChanged()完成的

    更准确地说,如果您在您的<intent-filter> 中有正确的操作,在Android 4.1+ 设备上,您将通过onAppWidgetOptionsChanged() 了解有关调整事件大小的信息。

    但我不知道如何更新其中的小部件。

    您更新它的方式与在 onUpdate() 中更新它的方式相同。使用适当的RemoteViewsAppWidgetManager 上调用updateAppWidget()

    我试图通过调用我在 onUpdate() 中放入的所有内容来重绘小部件,但它不起作用。

    “它不起作用”并不是对您的症状特别有效的描述。

    如何使用捆绑包?

    对于名为 newOptionsBundle,您可以通过以下方式找到您的新尺寸范围:

    newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)
    newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH)
    newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT)
    newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT)
    

    例如,this sample project 包含一个 AppWidgetProvider,它只是将这些值倒入一个字符串并使用它来更新一个 TextView。结果如下:

    【讨论】:

    • 仅供参考,此示例不适用于运行内部版本号 JZ054K.I9300XXXELL4 的 Galaxy S3。但是,它在我的 Nexus 4 上运行良好。感谢 Mark!
    • 我的错。 onAppWidgetOptionsChanged() 不会在调整大小时被调用。 Seems someone else is having this issue too
    • @Justin:哦,快乐。我将尝试使用 S3 来解决这个问题。谢谢!
    • 您现在如何处理 S3 上的这种情况?由于一个愚蠢的三星错误,我的小部件似乎坏了。
    • 是否有官方链接显示捆绑包的所有可用值?另外,我们怎么会有 min&max ?小部件的大小有一个宽度和高度...
    猜你喜欢
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    相关资源
    最近更新 更多