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

Composants graphiques Android Discussion :

Création d'un bouton dans un widget


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut Création d'un bouton dans un widget
    Bonjour, après quelques recherche, je ne trouve pas comment créer un bouton dans un widget, il doit probablement y avoir une histoire d'adaptor ou quelque chose comme ça mais là je tourne en rond et le SDK d'android ne me renseigne que moyennement.
    je prend par exemple celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class MonWidget extends AppWidgetProvider implements View.OnClickListener {
    private Button monButton;
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    			setContentView(R.layout.widget_layout);
    			monButton = (Button)findViewById(R.id.monButton);
    			monButton.setOnClickListener(this);
    	}
    ...
    En précisant que les fonctions posant problème sont et merci de jetter un oeil

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Salut,
    Je n'ai pas encore eu l'occasion de faire de widget, mais voici un exemple qui devrait vous mettre sur la bonne route :
    http://code.google.com/p/wiktionary-...ordWidget.java


    Concernant vos erreurs, je dirais que :
    public void onCreate(Bundle savedInstanceState) {
    ..}
    n'est pas une méthode de AppWidgetProvider
    et du coup le super.onCreate ne va pas fonctionner...

    Un widget n'est pas comme une application classique.
    Si vous avez des questions, ou une incompréhension, n'hésitez pas à redemander, le sujet m'intéresse également.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    J'ai beaucoup regardé la conception de ce widget déjà auparavant. J'ai essayé de le construire avec la class "updateService" mais ça fait planté des trucs qui marchait déjà et il n'y a pas de bouton, seulement le texte qui est rendu clicable... mais merci pour le lien

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    Bonsoir j'avance doucement, j'ai décidé de créer une sous classe qui incrémente une valeur lorsque l'on clique sur le bouton. Mon problème est que cette sous class doit être "static" imposé par le manifest. et du coup je n'arrive pas a rapatrier la valeur dans le corps du code de mon widget.
    j'ai bien essaye de mettre une méthode qui me retourne cette valeur mais encore une fois, pour l'utiliser elle doit être static et donc ne récupère pas la valeur en question. voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public static class ActNext extends Activity implements View.OnClickListener {
    		private Button Bnext;
    		private int sms_id=0;
    		protected void onCreate(Bundle icicle) {
    	         super.onCreate(icicle);
    	         setContentView(R.layout.widget_layout);
    				final Button Bnext = (Button) findViewById(R.id.next);
    		         Bnext.setOnClickListener(this);
     
    	     }
    		public int SMS_id () {
     
    			return sms_id;
     
    		}
    		@Override
    		public void onClick(View v) {
    			if (v==Bnext){sms_id= sms_id + 1;}
     
    		}
     
     
    	  }
    je cherche à récupérer la valeur sms_id

  5. #5
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Tu as l'air vraiment perdu dans ton développement, tu créé un widget, ensuite t'essaye de gérer ça via une activity, etc, bref, c'est pas gagné


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    import android.appwidget.AppWidgetManager;
    import android.appwidget.AppWidgetProvider;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.RemoteViews;
    import android.content.ComponentName;
    import android.content.Context;
    import android.database.Cursor;
    import android.app.*;
     
    public class MySMSwidget extends AppWidgetProvider implements View.OnClickListener {
    	private static int sms_id=0;
     
     
    	public void onUpdate(Context context, AppWidgetManager appWidgetManager,  int[] appWidgetIds) {
    		 Cursor c = context.getContentResolver().query(Uri.parse("content://sms/"), null, null ,null,null);
    		 String body = null;
    		String number = null;
    		String date = null;
    		c.moveToPosition(sms_id);
    		 body = c.getString(c.getColumnIndexOrThrow("body")).toString();
    		   number = c.getString(c.getColumnIndexOrThrow("address")).toString();
    		   date = c.getString(c.getColumnIndexOrThrow("date")).toString();
    		c.close();
     
    		RemoteViews updateViews = new RemoteViews(context.getPackageName(),
                 R.layout.widget_layout);
     
    		updateViews.setTextColor(R.id.text, 0xFF000000);
    		updateViews.setTextViewText(R.id.text,date+'\n'+number+'\n'+body);
                    final Button Bnext = (Button) findViewById(R.id.next);
    		Bnext.setOnClickListener(this);
    		ComponentName thisWidget = new ComponentName(context, MySMSwidget.class);
    		appWidgetManager.updateAppWidget(thisWidget, updateViews);
         }
     
            public void onClick(View v) {
    			if (v==Bnext){sms_id= sms_id + 1;}
     
    	}
    }
    J'ai pas vérifié le code dans Eclipse, mais ça devrait pas être loin de la solution... Je te conseille fortement de lire des cours de Java (classique) et de POO. Ensuite renseigne toi sur Androïd, regarde l'API Demo, suit les tutoriel proposé par google. cela te permettera d'acquérir des bases solides et t'éviteront de t'avoir ce genre de soucis.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    Voilà, je partage mes trouvailles,
    pas de onClikLiestner ni de findViewById
    c'est réservé aux activity
    Il faut utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Intent intent = new Intent(context, ActNext.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
     
    		RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
            views.setOnClickPendingIntent(R.id.next, pendingIntent);
    Mon problème maintenant est de créer cette classe 'ActNext" qui va venir incrémenter ma valeur ou faire bouger mon cursor au choix.
    Il faut aussi déclarer cet intent dans le manifest pour qu'android accepte de l'exécuter.
    je suis ouvert pour l'écriture de cette classe, je n'ai pas encore réussit à l'écrire.

Discussions similaires

  1. [XL-2003] Création d'un bouton dans excel
    Par korni184 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/02/2012, 16h55
  2. Création d'un bouton dans le code Behind
    Par DeveloppeurWeb dans le forum VB.NET
    Réponses: 2
    Dernier message: 15/07/2010, 16h08
  3. création d'un bouton dans une barre d'outils
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 18
    Dernier message: 20/11/2008, 23h28
  4. [VBA-E] Création d'un bouton dans "Worksheet Menu Bar"
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 08h25

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