【发布时间】:2018-07-25 22:33:12
【问题描述】:
相反,小部件区域会显示一条错误消息“加载小部件时出现问题”
在日志中,我在添加应用小部件时看到了这些错误:
07-24 15:57:24.651 2057-5433/? E/RemoteViews: Package name com.theapp not found
07-24 15:57:24.651 2057-2057/? W/AppWidgetHostView: updateAppWidget couldn't find any view, using error view
android.content.res.Resources$NotFoundException: Resource ID #0x7f0b0034 type #0x5 is not valid
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2139)
at android.content.res.Resources.getLayout(Resources.java:1143)
at android.view.LayoutInflater.inflate(LayoutInflater.java:421)
at android.widget.RemoteViews.inflateView(RemoteViews.java:3498)
at android.widget.RemoteViews.-wrap1(Unknown Source:0)
at android.widget.RemoteViews$AsyncApplyTask.doInBackground(RemoteViews.java:3600)
at android.widget.RemoteViews$AsyncApplyTask.doInBackground(RemoteViews.java:3596)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
小部件在 8 之前的 Android 版本上显示良好
编辑:这是我的小部件布局文件:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/widget_margin">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/appwidget_background"
android:orientation="horizontal">
<TextView
android:id="@+id/button_settings"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/app_name" />
<TextView
android:id="@+id/button_on"
android:layout_width="56dp"
android:layout_height="match_parent"
android:text="@string/on" />
<TextView
android:id="@+id/button_off"
android:layout_width="56dp"
android:layout_height="match_parent"
android:text="@string/off" />
</LinearLayout>
</FrameLayout>
和元数据文件:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="40dp"
android:minHeight="40dp"
android:updatePeriodMillis="0"
android:previewImage="@drawable/widget_preview"
android:configure="com.theapp.appwidget.AppWidgetActivity"
android:initialLayout="@layout/appwidget"
android:resizeMode="horizontal|vertical" />
【问题讨论】:
-
嗯,堆栈跟踪显示它正在尝试将
R.dimen加载为R.layout。如果它在以前的版本上运行,我真的无法想象这是怎么发生的。 -
你怎么知道它正在尝试加载 R.dimen ? #0x5 类型是什么?
-
一个
R.dimen:developer.android.com/reference/android/util/…。0x7f0b0034在您的R.java中分配给什么?如果你在上面的堆栈跟踪之后重建,那可能已经改变了,所以在你去挖掘之前检查一下重新运行。 -
是的,我发现另一个问题与完全相同的问题,但它已被删除,所以你看不到它。 (在此处留下一个链接以供我将来参考:stackoverflow.com/q/51272322)他们说它在带有 Android 8.1 的 Pixel 2 上失败了,但在 9.0 上它工作得很好。如果您正在运行 8.1 并且可以升级,我不确定您可以做些什么,除了升级之外。
-
当然,我想这只会对您的个人设备有帮助。不会帮助您的用户解决问题,除非他们可以升级并愿意升级。