Android自定义小部件膨胀异常

10 浏览
0 Comments

Android自定义小部件膨胀异常

XML

 
    
    
    

Logcat

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): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.view.LayoutInflater.inflate(LayoutInflater.java:407)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.widget.RemoteViews.apply(RemoteViews.java:930)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:219)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.appwidget.AppWidgetHost.updateAppWidgetView(AppWidgetHost.java:250)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.appwidget.AppWidgetHost$UpdateHandler.handleMessage(AppWidgetHost.java:73)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.os.Handler.dispatchMessage(Handler.java:99)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.os.Looper.loop(Looper.java:123)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.app.ActivityThread.main(ActivityThread.java:4627)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at java.lang.reflect.Method.invokeNative(Native Method)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at java.lang.reflect.Method.invoke(Method.java:521)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at dalvik.system.NativeStart.main(Native Method)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): 由于在加载器dalvik.system.PathClassLoader中找不到com.org.BatteryManager.BatteryView类,所以出现了ClassNotFoundException异常

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.view.LayoutInflater.createView(LayoutInflater.java:466)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)

02-17 18:49:49.392: WARN/AppWidgetHostView(124): ... 15 more

0
0 Comments

在Android中,如果想要使用自定义视图,可以通过创建一个继承自某个基本视图组件类的自定义视图类来实现。例如,我在很多应用程序中使用自定义的Gallery组件。这个Gallery类只在滑动时移动一个框架,这与默认行为不同。

我创建自定义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文件中的位置不正确。

然而,这种方法对于应用程序小部件是不起作用的。应用程序小部件不能使用自定义类。

这个问题的解决方法是使用系统提供的预定义小部件类,而不是自定义类。这样可以确保小部件能够正确加载和显示。

希望这个解决方法能够帮助你解决问题。

0
0 Comments

这个问题的出现原因是自定义视图没有提供一个接受Context和AttributeSet两个参数的构造函数。解决方法是在自定义视图中添加一个带有这两个参数的构造函数。

以下是解决该问题的代码示例:

public class CustomView extends View {
    public CustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // 初始化自定义视图的逻辑
    }
}

通过添加这个构造函数,即可解决Android Custom Widget Inflate Exception问题。

0