Widget de la pantalla de inicio de Android: RemoteViews setRemoteAdapter (…) método no funciona en API 11+
Por lo tanto, las llamadas al método onUpdate
remoteViews.setRemoteAdapter(id, R.id.listview, intent)
- Bibliotecas de código abierto de Android? ¿Vistas reutilizables, ViewGroups, adaptadores etc?
- Selector DateTime en la aplicación Android
- Los widgets que se pueden hacer clic en Android
- ¿Es posible reutilizar RemoteViews en un appWidget en lugar de crear nuevos cada vez? Y cómo puedo almacenarlos?
- Android Studio: EditText editable es obsoleto Cómo utilizar inputType
Para aplicar un adaptador al listview en el widget.
Hay un botón en el encabezado del widget que puede cambiar qué conjunto de datos se muestra por el listview (piense en la bandeja de entrada, bandeja de salida, estrellas, etc para un widget hipotético de correo electrónico). Cuando hago clic en ese botón, lleva al usuario a una actividad que les permite elegir qué conjunto de datos se mostrará. Cuando se realiza la selección, se ejecuta el siguiente código:
Intent intent = new Intent(this, WidgetReceiver.class); intent.setAction("android.appwidget.action.APPWIDGET_UPDATE"); intent.putExtra("notify", true); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] {R.xml.widget_provider}); sendBroadcast(intent);
Esto llama con éxito al método onUpdate en la clase AppWidgetProvider del widget. Sin embargo, si tuviera que alternar entre diferentes tipos de conjuntos de datos, después de 2-3 cambios de preferencia, el método setRemoteAdapter
simplemente deja de funcionar. He ampliamente registrado el proceso, y el método, que se supone que llamar a un servicio que a su vez carga la clase RemoteViewsService.RemoteViewsFactory
para rellenar el widget y su adaptador, no hace ninguna de estas cosas. Las primeras veces que cambia la preferencia, funciona como se esperaba. Pero después se cierra.
¿Alguien tiene alguna idea de lo que está pasando aquí?
- Obtener la información actual de onClickListener de un objeto de Android View
- Android: cambia el formato de hora según el formato de hora actual del dispositivo
- ¿Mantener el punto culminante del elemento seleccionado en el fragmento?
- Cierre del Popup en Android
- ¿Podemos limitar el número de caracteres en edittext de SearchView en Android?
- ¿Cómo puedo utilizar la fuente bangla como un valor de cadena en android
- Android.database.sqlite.SQLiteCursor@435b9ba0
- Sincronizar dos ScrollView
Extraño, pero encontré una solución. Android parece almacenar en caché las intenciones que usa en su método onUpdate. Si vuelve a enviar lo que parece ser la misma intención, no funcionará como esperabas.
Solución: tenga un entero iterante estático que usted incluya como param en los extras de la intención. Resolvió el problema para mí.
Intent intent = new Intent(context, WidgetService.class); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, currentWidgetId); intent.putExtra("random", randomNumber); randomNumber++; intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
Oh, Android …
Me enfrenté a este problema hace algún tiempo. Este enfoque con un número aleatorio me ayudó también.
- Cómo obtener un mensaje de devolución de servicio de Android desde un plugin de teléfono
- ¿Cómo comunicar la aplicación con el servidor sin conexión a Internet?