2010-01-17 11 views
23

Estoy empezando con el desarrollo de Android y he creado un pequeño widget que muestra información en la pantalla de inicio. Sin embargo, ahora quiero implementar un botón en mi widget que actualice la información en mi widget TextView.Cómo implementar un botón en un widget de Android

¿Alguien puede aconsejar cómo hacerlo?

Gracias

+3

I hav Leí los documentos del desarrollador, ¡y así es como logré crear el widget! Pero ¿alguien puede aconsejar cómo se implementa un botón en un widget, es decir. No tengo una Actividad en la que configurar un SetOnClickListener. Entonces me pregunto cómo se implementan los botones con un widget. – bigtony

+0

http://developer.android.com/reference/android/widget/Button.html – YuppieNetworking

+4

Sí, he visto ese artículo, pero solo muestra cómo usar un botón en una actividad, pero no tengo actividad en mi widget. Tal vez se necesita una Actividad, pero no estoy seguro de cómo conectar la actividad con el widget, y esta es la base de mi pregunta: ¿cómo hago para implementar un Botón en un Widget de Android? – bigtony

Respuesta

23

Resuelto - Puedo confirmar que una actividad no es necesaria si se quiere crear un botón para actualizar una AppWidget Android.

he podido poner en práctica mi clase AppWidgetProvider tal que registra una intención de filtro android.appwidget.action.APPWIDGET_UPDATE con el receptor de difusión en el AndroidManifest.xml, que a su vez desencadena el evento onUpdate en la clase AppWidgetProvider (que a su vez, ejecuta UpdateService).

<!-- Broadcast Receiver that will process AppWidget updates --> 
<receiver android:name=".MyWidget" android:label="@string/widget_name"> 
    <intent-filter> 
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    </intent-filter> 
    <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget" /> 
</receiver> 

El UpdateService en mi clase AppWidgetProvider continuación, utiliza onHandleIntent para ejecutar un método buildUpdate privada - que registra el evento de clic con una llamada a setOnClickPendingIntent de la siguiente manera:

// set intent and register onclick 
Intent i = new Intent(this, MyWidget.class); 
PendingIntent pi = PendingIntent.getBroadcast(context,0, i,0); 
updateViews.setOnClickPendingIntent(R.id.update_button,pi); 

Aquí hay un enlace a alguna fuente código de un ejemplo de trabajo, que muestra cómo un botón de actualización se puede utilizar para actualizar un widget de Twitter:

https://github.com/commonsguy/cw-advandroid/tree/b01438e7f0fed8f795ddec4be43066905f03d0cc/AppWidget/TwitterWidget

3

botón se apoya en appwidget así que no sé cuál es el problema. Mire este ejemplo sobre cómo asignar acciones a través de views.setOnClickPendingIntent (R.id.YOURVIEW ID, yourIntent);

objeto A RemoteViews (y, en consecuencia, un Widget App) puede apoyar las siguientes clases de Presentación:

FrameLayout LinearLayout RelativeLayout

y los siguientes clases widget:

Cronómetro de botón de reloj analógico ImageButton ImageView ProgressBar TextView Descendientes de th Estas clases no son compatibles.

+0

Hola, gracias, entiendo cómo usar views.setOnClickPendingIntent en mi método AppWidget onUpdate(), pero no estoy seguro de cómo implementar la actividad (¿lo necesito? Supongo que sí, pero está implementado como un botón normal ?) y cómo configurar mi archivo Manifiesto para registrar la intención de la actividad (¿cuál es la acción?). – bigtony

+0

Depende de lo que estés tratando de hacer. Si desea mostrar algún tipo de diálogo, sí, cree actividad para él.Que en su botón (supongo que es parte del widget) en views.setOnClickPendingIntent crea una intención para iniciar esa actividad. –

+0

Gracias - Sí, el botón es parte de un widget. En realidad, no quiero crear un diálogo, por lo que tengo dudas sobre el uso de una Actividad. Entonces, ¿tengo razón al pensar que no necesito una Actividad cuando solo quiero un botón para actualizar el widget a través de un servicio? – bigtony

Cuestiones relacionadas