安卓自定义小部件填充异常

6

XML

  <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res/com.org.BatteryManager"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:orientation="vertical"
      >
    <com.org.BatteryManager.BatteryView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:textColor="#ffffffff"
    />
    </LinearLayout>

日志记录

02-17 18:49:49.392: WARN/AppWidgetHostView(124): updateAppWidget找不到任何视图,使用错误视图 02-17 18:49:49.392: WARN/AppWidgetHostView(124): android.view.InflateException:二进制XML文件行#9:膨胀类com.org.BatteryManager.BatteryView时出错 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.view.LayoutInflater.rInflate(LayoutInflater.java:618) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.view.LayoutInflater.inflate(LayoutInflater.java:407) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.view.LayoutInflater.inflate(LayoutInflater.java:320) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.widget.RemoteViews.apply(RemoteViews.java:930) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:219) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.appwidget.AppWidgetHost.updateAppWidgetView(AppWidgetHost.java:250) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.appwidget.AppWidgetHost$UpdateHandler.handleMessage(AppWidgetHost.java:73) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.os.Handler.dispatchMessage(Handler.java:99) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.os.Looper.loop(Looper.java:123) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.app.ActivityThread.main(ActivityThread.java:4627) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在java.lang.reflect.Method.invokeNative(Native Method) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在java.lang.reflect.Method.invoke(Method.java:521) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在dalvik.system.NativeStart.main(Native Method) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): java.lang.ClassNotFoundException:com.org.BatteryManager.BatteryView在类加载器dalvik.system.PathClassLoader中找不到 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在java.lang.ClassLoader.loadClass(ClassLoader.java:573) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在java.lang.ClassLoader.loadClass(ClassLoader.java:532) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.view.LayoutInflater.createView(LayoutInflater.java:466) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): 在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565) 02-17 18:49:49.392: WARN/AppWidgetHostView(124): ... 15更多

如果您将@RemoteViews标签删除,可以尝试一下,这对我有用。我努力思考了很久才弄清楚这个问题。 - DeliveryNinja
2个回答

6
我也遇到了同样令人困惑的问题。要解决这个问题,您的自定义视图应该提供一个构造函数,包含两个参数:Context和AttributeSet,如这里所建议的那样。

完美地完成了!谢谢!:-D - Brad
1
也可能是由于https://dev59.com/j3I95IYBdhLWcg3w5iY4引起的。 - nmr

0

com.org.BatteryManager.BatteryView是什么?

如果您想使用自定义视图,则可以实现。方法是在Java中创建一个自定义视图类,该类扩展了一些基本视图组件类。

例如,我在许多应用程序中使用自定义的Gallery组件。该画廊类将在滑动时仅向左或向右移动一个框架,这与默认行为不同。

我制作自定义画廊的方法是扩展基本的Gallery类 -

package com.testing.whatever;

public class CustomGallery extends Gallery {
    //CODE OVERRIDES HERE
}

然后在我的XML代码中,代码看起来与您已经拥有的类似--

<com.testing.whatever.CustomGallery android:layout_width="fill_parent" android:layout_height="fill_parent" />

我猜测你之所以出现错误,是因为你没有编写com.org.BatteryManager.BatteryView或者它在你的Java文件中位置不正确。

1
这对于应用程序小部件不起作用。应用程序小部件无法使用自定义类。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接