Comment implémenter un bouton sur un Widget Android

Je ne fais que commencer avec le développement Android et j'ai créé un joli petit widget qui affiche des informations sur mon écran d'accueil. Cependant, je veux maintenant implémenter un bouton sur mon widget qui met à jour les informations dans mon widget TextView.

Quelqu'un peut-il vous conseiller comment procéder?

Merci

23
demandé sur bigtony 2010-01-18 01:56:08

2 réponses

Résolu-je peux confirmer qu'une activité N'est pas nécessaire si vous voulez créer un bouton pour mettre à jour un AppWidget Android.

J'ai pu implémenter ma classe AppWidgetProvider de sorte qu'elle enregistre un android.appwidget.action.Appwidget_update intent-filtre avec le récepteur de diffusion dans le AndroidManifest.xml, qui déclenche ensuite l'événement onUpdate dans la classe AppWidgetProvider (qui à son tour exécute le 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>

Le UpdateService dans mon AppWidgetProvider la classe utilise ensuite onHandleIntent pour exécuter une méthode buildUpdate privée-qui enregistre l'événement onClick avec un appel à setOnClickPendingIntent comme suit:

// 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);

Voici un lien vers un code source d'un exemple, qui montre comment un bouton de mise à jour peut être utilisé pour mettre à jour un widget Twitter:

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

23
répondu bigtony 2012-04-19 16:22:43

Le bouton

Est pris en charge dans appwidget, donc je ne sais pas quel est le problème. Regardez cet exemple sur la façon d'attribuer des actions via views. setOnClickPendingIntent (R. id.YOURVIEW ID, YOURINTENT);

Un objet RemoteViews (et, par conséquent, un Widget D'application) peut supporte les classes de mise en page suivantes:

FrameLayout LinearLayout RelativeLayout

Et les éléments suivants classes de widget:

AnalogClock Bouton Chronomètre ImageButton ImageView ProgressBar TextView Descendants de ces classes ne sont pas pris en charge.

3
répondu Alex Volovoy 2010-01-18 02:51:18