Android: AppWidget con vista personalizada no funciona

Estoy creando un appwidget que consiste en una única vista personalizada llamada Foo.

xml / widget.xml:

  

diseño / widget_layout

    

Foo:

  public class Foo extends View {..} 

Probé la vista de Foo en una aplicación de Android normal, y funciona perfectamente. Sin embargo, cuando bash ejecutar el widget, aparece un "error while loading widget" . Cuando elimino la vista de Foo del widget, todo está bien. Entonces tiene algo que ver con la vista de Foo .

Lamentablemente, no puedo obtener ningún error más específico en DDMS, porque no conozco una forma de depurar widgets.

Me gustaría saber si es posible utilizar tus propias vistas personalizadas en un widget de aplicación. ¿Estoy haciendo algo mal aquí?

Dejé casi intacta mi vista personalizada, e implementé un ImageView para mi widget, luego rendericé la vista usando getDrawingCache ()

 MyView myView = new MyView(context); myView.measure(150,150); myView.layout(0,0,150,150); myView.setDrawingCacheEnabled(true); Bitmap bitmap=myView.getDrawingCache(); remoteViews.setImageViewBitmap(R.id.dial, bitmap); 

Otra forma de hacerlo sin usar getDrawingCache() :

 MyView myView = new MyView(this); myView.measure(500, 500); myView.layout(0, 0, 500, 500); Bitmap bitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888); myView.draw(new Canvas(bitmap)); remoteViews.setImageViewBitmap(R.id.imageView, bitmap); 

Usé caché para no volver a dibujar toda la vista, así que no pude usar el código anterior. Y lo encuentro más elegante. Espero que pueda ser útil para alguien.

ver la documentación .

AnalogClock, Button, Chronometer, ImageButton, ImageView, ProgressBar y TextView son las vistas admitidas. Para los diseños, debe usar FrameLayout, LinearLayout o RelativeLayout.

No puede tener CUALQUIER vista personalizada utilizada en el widget. De hecho, incluso esas vistas predefinidas por Android no son compatibles.

Para obtener una lista detallada de widgets / diseños compatibles, lea la documentación . Cualquier cosa que no esté documentada no se puede colocar en widgets.