2011-02-18 17 views
7
<?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 couldn't find any view, using error view 
    02-17 18:49:49.392: WARN/AppWidgetHostView(124): android.view.InflateException: Binary XML file line #9: Error inflating class 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): Caused by: java.lang.ClassNotFoundException: com.org.BatteryManager.BatteryView in loader dalvik.system.PathClassLoader[.] 
    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

Intenta eliminar la etiqueta @RemoteViews si tienes una, que funcionó para mí. Me estaba destrozando el cerebro para resolver esto. – DeliveryNinja

Respuesta

0

¿Qué es com.org.BatteryManager.BatteryView?

Si desea utilizar una vista personalizada, entonces es posible. La forma de hacerlo es crear una clase de vista personalizada en Java que extienda alguna clase de componente de vista base.

Por ejemplo, uso componentes de Galería personalizados en muchas de mis aplicaciones. La clase de galería solo moverá un cuadro hacia la izquierda o hacia la derecha en un deslizamiento que es diferente del comportamiento predeterminado.

La forma en que hice mi galería costumbre es extiende la clase básica Galería -

package com.testing.whatever; 

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

Luego, en mi código XML, el código parecía similar a lo que ya tiene -

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

Sospecho que está obteniendo su error porque no ha codificado com.org.BatteryManager.BatteryView o está en el lugar incorrecto en sus archivos java.

+1

Esto no funciona para un widget de aplicación. Los widgets de la aplicación no pueden usar clases personalizadas. – CommonsWare

6

Tuve el mismo problema confuso. Para solucionarlo, su vista personalizada debería proporcionar un constructor con dos argumentos: Context y AttributeSet como se indica en here.

+0

¡Totalmente clavado! ¡Gracias! :-D – Brad

+1

También causado por http://stackoverflow.com/questions/2098318/error-referencing-an-inner-class-view-in-layout-main-xml – nmr