IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Différencier les AppWidgets


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 216
    Points : 139
    Points
    139
    Par défaut Différencier les AppWidgets
    bonjour,

    je voudrais savoir comment faire pour distinguer deux appwidgets (identique)

    mon application est un bloc note et un appwidget permet d'afficher une page, ça fonctionne bien.
    je sauvegarde les données à afficher avec des sharedpreferences.

    l'utilisateur peux mettre plusieurs fois le même appwidget et donc mettre différentes pages, je voudrais donc faire une sauvegarde par appwidget.

    voici un bout de code:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
     
            for (int appWidgetId : appWidgetIds) {[...]}
    }

    je pensais me servir de l' appWidgetId pour le nom du fichier des sharedpreferences, mais je ne comprend pas exactement ce que ça représente pars que quand je n'ai qu'un appwidget mon appWidgetIds contient 5 valeurs.

    j'ai donc 2 questions:

    - comment différencier plusieurs appwidget ?
    - a quoi correspond le appWidgetId de ma méthode ?

    Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Il doit y avoir un soucis...
    Certains widgets doivent crasher et ne pas s'afficher....

    1 appWidgetId = 1 widget.

    L'appWidgetId est fourni/géré par le conteneur (le launcher).
    Et sincèrement, il est unique, et il y en a un par widget.

    Donc effectivement on peut ou bien:
    Utiliser des clés avec comme suffixe "_#" (# = appWidgetId)
    Ou encore utiliser un fichier de SharedPreferences par appWidgetId (pareil, utiliser _# comme suffixe du nom des preferences).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 216
    Points : 139
    Points
    139
    Par défaut
    bonjour,

    je pense avoir trouvé le problème... mais pas la solution.

    j'ai désinstallé puis réinstallé mon appli et maintenant je n'ai plus qu'un appWidgetId.

    le problème que j'ai trouvé c'est que dans mon activity de configuration je récupère l' id avec :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Intent intent = getIntent();
    		Bundle extras = intent.getExtras();
     
    		if (extras != null)
    		{
    			appwidgetid = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
    		}

    puis je fais la sauvegarde avec cet id.

    quand je veux récupérer les données depuis l'update de mon appwidget:

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
     
            for (int appWidgetId : appWidgetIds) {[...]}
    }

    je me sert de l' appWidgetId, hors ce n'est pas le même que lorsque j'ai fais ma sauvegarde.

    je ne sais pas pourquoi ni comment résoudre ce problème.

    Merci.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 216
    Points : 139
    Points
    139
    Par défaut
    bonjour,

    j'ai trouvé la solution au problème, le souci venait du fait que lorsque je déclarais mon PendingIntent pour afficher mon activity, je ne le différenciais pas selon l' appwidget, je faisais :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    PendingIntent pendingchangement = PendingIntent.getActivity(context, 0, intentchangement, 0);

    j'avais donc le meme PendingIntent pour tous mes appwidget.

    je l'ai modifié ainsi :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    PendingIntent pendingchangement = PendingIntent.getActivity(context, appWidgetId, intentchangement, 0);

    et maintenant ça marche nickel.

    Merci nicroman.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/03/2007, 13h45
  2. Réponses: 6
    Dernier message: 26/02/2007, 15h33
  3. Que différencie les onduleur APC aux TRIP LITE ?
    Par nisso dans le forum Périphériques
    Réponses: 1
    Dernier message: 07/01/2007, 15h22
  4. Différencier les instances d'une même application
    Par Laurent.B dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 4
    Dernier message: 19/09/2006, 16h00
  5. Réponses: 16
    Dernier message: 27/05/2006, 08h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo