【问题标题】:"_Problem Loading Widget" message“_Problem Loading Widget”消息
【发布时间】:2011-06-24 13:32:47
【问题描述】:

加载小部件时,如果它找不到资源或其他内容,它会显示问题加载小部件。就这样!惊人的!此消息保留在主屏幕上,甚至没有说明它在加载哪个小部件时遇到问题。

我通过反复试验找到了答案,但我想知道发生这种情况时是否有任何地方可以找到错误消息。 Android 会在哪里说明它在加载小部件时遇到了什么问题,甚至是哪个小部件加载失败?

【问题讨论】:

  • 它在哪里说:“问题加载小部件”?你看过logcat吗?您可以在 Eclipse 中打开 logcat 视图或使用命令“adb logcat”。
  • 我在小部件布局中使用了自定义文本视图。这导致了问题。
  • 供我以后参考,我使用的是android:background="?selectableItemBackgroundBorderless" android:clickable="true" 这导致了问题
  • @OmarBizreh 同样在这里.. 那么有没有办法让小部件按钮中的波纹起作用?
  • @OmarBizreh 好的,所以如果您声明自己的 xml 资源并添加 ,它似乎可以工作:)

标签: java android android-layout android-widget loading


【解决方案1】:

检查您在 Widget 中的视图中使用的元素..

Documentation link

RemoteViews 对象(因此,App Widget)可以支持以下布局类:

  • 框架布局
  • 线性布局
  • 相对布局
  • 网格布局

还有以下小部件类:

  • 模拟时钟
  • 按钮
  • 天文钟
  • 图像按钮
  • 图像视图
  • 进度条
  • 文本视图
  • ViewFlipper
  • 列表视图
  • 网格视图
  • 堆栈视图
  • AdapterViewFlipper

使用禁止元素会导致这种情况

Problem Loading Widget

消息,没有说明它发生在哪里。

【讨论】:

  • @Gangnus 需要注意的一点是,Logcat 通常会向您显示错误。您可能忽略的是它没有将其显示为您的应用程序包的一部分!所以从 Logcat 中删除包过滤器!
  • @Gangnus 我只有 ImageView、Linearlayout、Textview 和 Relativelayout。小部件在 Android +3.0 设备上运行良好,但在姜饼上,它说加载小部件有问题。 logcat 上没有错误或异常。知道为什么会这样(可能是使用的任何不支持的属性)?顺便说一下,每个 android 版本都会调整 wigdet 的大小。
  • 即使使用 AppCompat 元素,例如 android.support.v7.widget.GridLayout will not work
  • 任何通过这个问题的人.. 不要使用 ConstraintLayout。它不适用于小部件。
  • 我试图在我的小部件中使用 ConstraintLayout,这解释了我收到错误的原因。谢谢!
【解决方案2】:

如 cmets 中所说,检查 logcat。您将看到一个 NullPointerException。我以前也有过。

【讨论】:

  • 我会补充一点,如果它是资源,有时它会发出警告消息。我认为并不总是显示错误。
  • 通常它试图访问像 R.id. 这样的资源?或不存在的东西。
  • 那么一旦你看到错误,你如何纠正它?我已尝试卸载该应用程序,但小部件警告仍然存在。
  • 我现在有这个问题,logcat 保持安静。
  • @Maarten 需要注意的一点是,Logcat 通常会向您显示错误。您可能忽略的是它没有将其显示为您的应用程序包的一部分!所以从 Logcat 中删除包过滤器!
【解决方案3】:

还有一个可能的原因:

我在日志中看到了这个:

无法解析属性

问题是我试图使用当前主题中的颜色作为我的一个布局的背景。

例如

android:background="?themeColor"

将其更改为特定颜色解决了该问题。

android:background="@color/White"

【讨论】:

  • 虽然不像使用主题属性那么舒服,但您仍然可以通过使用 remoteViews.setInt(R.id.xxx, "setBackgroundColor", color)remoteViews.setTextColor(R.id.xxx, color) 之类的调用来更改小部件中的颜色。
  • 我在任何地方都没有看到“已解析属性”错误,但这也是我的原因!
【解决方案4】:

基本上,小部件会吞下异常。只需在您的 logcat 中设置一个适当的过滤器,您就可以看到问题所在...

上面,我只是在搜索“Widget”这个词,并且没有对任何特定的应用程序设置过滤器。它基本上给了我Throwable.getMessage() 没有完整的堆栈跟踪。

【讨论】:

  • 看到错误是解决方案的 99%。谢谢。
【解决方案5】:

加载小部件的问题是您的小部件布局中的问题!

您可以在小部件中使用的资源数量有限。请确保使用正确的元素及其字段。

RemoteViews 对象(因此,App Widget)可以支持以下 ... 小部件类:

AnalogClock
Button
...

Developer docs

我的问题是:我的按钮字段不受支持

android:onClick="onClick" 

删除此项可使小部件出现在放置位置(如果之前放置)和可用小部件的菜单中。

事实上,为任何View 设置android:onClick= 都会导致此错误。

【讨论】:

    【解决方案6】:

    RemoteViews 对象(因此,App Widget)可以支持以下布局类:

    FrameLayout
    LinearLayout
    RelativeLayout
    GridLayout
    

    还有以下小部件类:

    AnalogClock
    Button
    Chronometer
    ImageButton
    ImageView
    ProgressBar
    TextView
    ViewFlipper
    ListView
    GridView
    StackView
    AdapterViewFlipper
    

    使用上述以外的任何东西都会导致这种所谓的“问题加载小部件”。

    此外,检查日志(没有任何过滤器)以查看此问题的确切行。

    【讨论】:

      【解决方案7】:

      当然有这样的用例,在主页上加载了一个小部件,然后用户卸载包含该小部件和小部件配置应用程序的应用程序。

      发生这种情况时,您所看到的只是主屏幕上类似 toast 的框中的“问题加载小部件”。据我所知,该小部件没有任何迹象表明软件包正在被卸载,我猜主屏幕 AppWidgetManager 会显示一条默认消息。

      操作系统团队的行为没有经过深思熟虑。我建议最好在删除包之前调用小部件的 onDisbled() 和 onDestroy() 方法,以便它们可以在需要时进行整理,并且用户(非极客手机用户)可以获得干净的体验。

      【讨论】:

        【解决方案8】:

        我也面临这个问题,但这只是由于小部件布局繁重。小部件布局应该尽可能轻。现在我的小部件工作完美。

        【讨论】:

        • 正如@PKTomar 提到的,如果您使用太多内部布局,您可能会遇到这个问题。不要增加布局的深度。
        • 我完全无法弄清楚发生了什么,这就是问题所在。布局非常深,Android 不喜欢它。它只是在 StackView 和 ListView 等 Collection 小部件中说“问题加载小部件”或“正在加载...”。简化布局并重新开始工作。
        【解决方案9】:

        可能是Moving of the specific (Widget) Application from Internal Memory to SD card.(Android – Fixing “Problem Loading Widget” Error)引起的

        【讨论】:

          【解决方案10】:

          我这边的问题是我使用了 androidx.appcompat.widget.AppCompatTextView 而不是 TextView。所以小部件布局中没有 AppCompat 小部件。看来Android Widget 太有限了。

          【讨论】:

            【解决方案11】:

            我遇到了这个问题,因为我试图使用复选框!

            所以,只需remove checkbox

            它会正常工作的。

            【讨论】:

              【解决方案12】:

              刚刚修复了其他答案中未提及的此错误的另一个变体。

              症状是: 1) Gingerbread 及以下的“加载小部件问题”错误 2) 完全相同的构建在 ICS 和 Jellybean 上运行良好 3)logcat中没有错误

              问题是由操纵一个从未在远程视图中膨胀的视图引起的。具体来说:

              remoteviews.setViewVisibility(viewId, View.GONE);

              其中 viewId 是有效资源,但它位于从未添加到远程视图的布局中。没有抛出任何错误,并且在调用 .updateAppWidget() 后小部件显示“问题加载小部件”

              【讨论】:

                【解决方案13】:

                我遇到了同样的问题,但 logcat 没有显示任何可疑内容,既没有错误也没有警告。基本上,我调用了错误的方法来更改 textview 的 text 的颜色。

                【讨论】:

                  【解决方案14】:

                  我有同样的问题。问题已解决:我在小部件中使用了自定义视图。在我的情况下,它是带有自定义字体的 TextView。

                  【讨论】:

                    【解决方案15】:

                    在我的情况下,我在其他视图上浮动textView。删除它并考虑以不同的方式向用户显示我的信息并使用不重叠的现有视图是解决方案。

                    所以不要与RelativeLayout 重叠视图,我仍然使用它并且它可以工作,但视图不会尽可能重叠。

                    【讨论】:

                      【解决方案16】:

                      仅作记录。我有一个 FrameLayout,里面有一个 TextView,所有内容都在一个 LinerLayout 中,这将是我的小部件的标题。最初我有这个

                      <LinearLayout
                      [...] 
                      
                      <FrameLayout
                          android:id="@+id/widget"
                          android:layout_width="match_parent"
                          android:layout_height="?attr/actionBarSize"
                          android:background="@color/colorPrimary">
                          <TextView
                              android:layout_width="match_parent"
                              android:layout_height="match_parent"
                              android:text="@string/app_name"
                              android:layout_margin="@dimen/activity_horizontal_margin"
                              android:textColor="@android:color/white"/>
                      </FrameLayout>
                      
                      [...] 
                      </LinearLayout>
                      

                      和这里的每个人一样,我收到了“加载小部件问题”消息。解决方案是改变这个

                          android:layout_height="?attr/actionBarSize"
                      

                      为此:

                          android:layout_height="64dp"
                      

                      【讨论】:

                        【解决方案17】:

                        在我的情况下,错误是由更改提供程序类名称引起的。因此,如果您更改了 Widget Provider 类的名称,请尝试将其更改回来。此外,如果您更改了 xml 文件的名称(例如,widget_info.xmlwidget_layout.xml),您可能还想将它们改回来。

                        仅当用户更新应用且“旧”小部件当前可见时才会发生这种情况。

                        【讨论】:

                          【解决方案18】:

                          我也遇到了同样的问题——

                          我使用的是 android.support.constraint.ConstraintLayout,这就是为什么在删除它并更改为 LinearLayout 后它会说 “加载小部件时出现问题” > 问题已解决为@Gangnus saying,它仅适用于特定视图。

                          【讨论】:

                            【解决方案19】:

                            我遇到了同样的问题。 我在 widgetUI 中使用图像。减小图像尺寸在我的情况下有效

                            【讨论】:

                              猜你喜欢
                              • 2019-01-18
                              • 1970-01-01
                              • 1970-01-01
                              • 2022-11-25
                              • 1970-01-01
                              • 2017-05-11
                              • 2020-11-30
                              • 2018-06-15
                              • 1970-01-01
                              相关资源
                              最近更新 更多