Después de que los botones de cambio de orientación en un widget no responden

Posible duplicado:
Después de que los botones de cambio de orientación de un widget no responden

Estoy haciendo frente a un problema con un appwidget que tiene un ImageView dentro del diseño del xml para el cual registro un pendingintent que se maneja en el método de OnReceive. Todo funciona bien hasta que cambie la orientación del teléfono. En este punto el widget ya no funciona, hago clic en la imagen pero no sucede nada. Este problema es exactamente como el de aquí: Después de que los botones de cambio de orientación en un widget no responden

¿Cuál es el problema y cómo se puede resolver? Gracias.

Finalmente conseguí recrear la solución sin servicio del OP. Aquí está el secreto para el registro: Cada vez que actualice las vistas remotas, debe actualizar todo lo que haya actualizado. Mi aplicación estaba actualizando algunos elementos visuales, pero no configurando el manejador de botones de nuevo. Esto hizo que el manejador dejara de funcionar – no de inmediato – sólo después de un cambio de rotación, de ahí la confusión.

Si esto se hace correctamente, no es necesario interceptar las transmisiones de cambio de configuración, las últimas vistas remotas que se establezca se utilizarán de nuevo después de la rotación. Ninguna llamada es necesaria para su AppWidgetProvider.

Tuve un problema similar, pero mi aplicación está funcionando bien ahora con la solución sugerida por Alex

"… resuelto sin la ayuda de un servicio, acaba de establecer de nuevo el setOnClickPendingIntent en el método OnReceive"

Seguí el método onReceive y se llama cada vez que cambio la orientación de mi dispositivo, así que llamé de nuevo la configuración de mi widget en el método onReceive.

De todos modos no estoy seguro de que esta es la mejor solución para resolver ese problema, si alguien sabe una mejor solución, por favor comparta.

Gracias.

Siempre que actualice la apariencia de su widget (utilizando una Actividad o su Broadcast Receiver [proveedor de widget de aplicación]), también debe reasignar todos los PendingIntents para los controladores de clics y, a continuación, llamar a updateAppWidget() forma normal.

Ejemplo con setTextViewText() :

 // This will update the Widget, but cause it to // stop working after an orientation change. updateWidget() { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); remoteViews.setTextViewText(R.id.widget_text_view, "Updated widget"); appWidgetManager.updateAppWidget(appWidgetId, remoteViews); } // This is the correct way to update the Widget, // so that it works after orientation change. updateWidget() { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); remoteViews.setTextViewText(R.id.widget_text_view, "Updated widget"); Intent intent = new Intent(context, MyWidgetActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, ...); remoteViews.setOnClickPendingIntent(R.id.widget_click_button, pendingIntent); appWidgetManager.updateAppWidget(appWidgetId, remoteViews); } 
  • ¿Cómo forzar un cambio de configuración en una prueba Android Robolectric?
  • ¿Debo hacer diferente diseño (archivos xml) para móviles android diferentes
  • Problemas al manejar los cambios de orientación
  • La lista desplegable de Spinner y la orientación de la pantalla cambian el problema
  • Problemas al manejar los cambios de orientación
  • Emulador de panal invertido pantalla en retrato
  • Fragmentos anidados pierden llamadas a onCreateOptionsMenu después de rotación de pantalla
  • Cómo arreglar la orientación de la pantalla en vertical para toda mi aplicación PhoneGap
  • Manejo de la orientación de la pantalla del androide para spinner
  • Bloquear la orientación hasta que termine Asíntate
  • ¿Cómo utilizo un servicio para supervisar el cambio de orientación en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.