android - 应用小部件未在奥利奥上显示
问题描述
相反,小部件区域会显示一条错误消息,指出“加载小部件时出现问题”
在日志中,我在添加应用小部件时看到了这些错误:
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" />
解决方案
“加载小部件时出现问题”+您有限的堆栈跟踪表明存在布局问题。如果您显示您的布局文件会有所帮助。返回并检查您的所有属性、图像和视图。您的布局中可能有一个元素不允许用于应用程序小部件,因为它们在可以使用的视图中受到限制。还要检查您是否在元数据 xml 文件中正确调整了小部件的大小,并检查您的填充是否遵循指南。android 指南描述了你应该如何调整它的大小和使用填充:https ://developer.android.com/guide/practices/ui_guidelines/widget_design
推荐阅读
- r - 在 col C 的某些值下,如何根据 col A 是否大于 col B 的平均值来改变新列?
- reactjs - 如何在 Redux 中存储或访问有效负载数据
- javascript - 使用 math.random() 而不重复数组中的那些随机数
- python - 在列表列表中,我需要将每个单独列表中的元素限制为前 100 个
- javascript - 我如何申请 onInvalid 但适用于整个表格?
- reactjs - 使用 Typescript 通过对象中的道具动态创建表格单元格
- python - 如何循环查找 Selenium xpath 中的子元素?
- python - 通过“flask run”和 Vim 运行代码时,Flask-Kerberos 会产生不同的结果
- python-3.x - 如何使用 python 控制 Linux 上的“另一个”屏幕?
- javascript - Typescript/Vue 3——对象数组中的 find() 值。对象的类型为“未知”