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 :

Créer une liste de contacts


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Créer une liste de contacts
    Bonsoir a tous !

    Voilà, j'ai récemment commencé la programmation android et comme tout newbie de programmation j'ai du mal dans un de mes projets.

    Voilà je souhaiterais faire une application qui permet d'aller récupérer un contact dans le téléphone (Nom et numéro de mobile), de l'enregistrer dans l'appli sous forme de liste, et de cette liste pouvoir sortir tous les numéros de téléphone dans une fonction d'envoi de sms, soit en quelque sorte faire une appli pour des sms groupé, mais de façon à ce que cette liste reste sauvegardée et l'utilisateur puisse voir les contact inclue dans la liste.

    En faite ce que j'ai fais jusque la:

    On lance l'appli on arrive sur une page ou on nous propose 3 choix :

    -Ajouter contact
    -Liste contact
    -Envoyer sms

    Premièrement on ajoute un contact donc le bouton nous mène sur une autre "page" qui contient 2 zone de textes, une pour le nom l'autre pour le numéro. Il y a en dessous un bouton pour ouvrir le gestionnaire de contact.

    Dans l'idéal il faudrait que quand on sélectionne 1 contact dans le gestionnaire son nom et numéro s'affiche dans les zone de textes et par pression sur un bouton "enregistrer" on puisse retrouver le contacte dans la partie "liste de contact"

    Une fois que cette liste de contact contient des contact il fraudait pouvoir en un clique sur envoyer SMS envoyer un message prédéfini à toute cette liste de contacts.

    J'ai essayé de me débrouiller avec les tutos en ligne mais rien n'y fait, j'ai besoins de vos lumières !

    Merci d'avance !

    Voilà le code de ma class :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    package com.iofdev.jeuxdecours;
     
    // ici tous les imports 
     
    public class MainActivity extends Activity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            LayoutInflater factory = LayoutInflater.from(this);
            final View JoueurActivity = factory.inflate(R.layout.joueur_activity, null);
            final View AddJoueur = factory.inflate(R.layout.alertdialogperso, null);
     
        }
     
      public void showAlert(View view) {	  
    	  setContentView(R.layout.alertdialogperso);
    }
     
    // ----- Demande de contact-------- PB !
      private static final int CONTACT_PICKER_RESULT = 1001;
      public void doLaunchContactPicker(View view) {
    	    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
    	            Contacts.CONTENT_URI);
    	    startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
    	}
      @Override  
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
          if (resultCode == RESULT_OK) {  
              switch (requestCode) {  
              case CONTACT_PICKER_RESULT:
                  final EditText phoneInput = (EditText) findViewById(R.id.ComNum);
                  Cursor cursor = null;  
                  String phoneNumber = "";
                  List<String> allNumbers = new ArrayList<String>();
                  int phoneIdx = 0;
                  try {  
                      Uri result = data.getData();  
                      String id = result.getLastPathSegment();  
                      cursor = getContentResolver().query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[] { id }, null);  
                      phoneIdx = cursor.getColumnIndex(Phone.DATA);
                      if (cursor.moveToFirst()) {
                          while (cursor.isAfterLast() == false) {
                              phoneNumber = cursor.getString(phoneIdx);
                              allNumbers.add(phoneNumber);
                              cursor.moveToNext();
                          }
                      } else {
     
                      }  
                  } catch (Exception e) {  
     
                  } finally {  
                      if (cursor != null) {  
                          cursor.close();
                      }
     
                      final CharSequence[] items = allNumbers.toArray(new String[allNumbers.size()]);
                      AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                      builder.setTitle("Choose a number");
                      builder.setItems(items, new DialogInterface.OnClickListener() {
                          public void onClick(DialogInterface dialog, int item) {
                              String selectedNumber = items[item].toString();
                              selectedNumber = selectedNumber.replace("-", "");
                              phoneInput.setText(selectedNumber);
                          }
                      });
                      AlertDialog alert = builder.create();
                      if(allNumbers.size() > 1) {
                          alert.show();
                      } else {
                          String selectedNumber = phoneNumber.toString();
                          selectedNumber = selectedNumber.replace("-", "");
                          phoneInput.setText(selectedNumber);
                      }
     
                      if (phoneNumber.length() == 0) {  
     
                      }  
                  }  
                  break;  
              }  
          } else {
          }  
      }
    	public void showSelectedNumber(int type, String number) {
    	    EditText num=(EditText)findViewById(R.id.ComNum);
            num.setText(number);
    	}
     
    	 public void envoi(View view) {
     
    	      LayoutInflater factory = LayoutInflater.from(this);
    	      final View envoiView = factory.inflate(R.layout.alertenvoie, null);
     
    	      AlertDialog.Builder env = new AlertDialog.Builder(this);
     
    	      env.setView(envoiView);
     
    	      env.setTitle("Défis");
     
    	      env.setIcon(android.R.drawable.arrow_up_float);
     
    	      env.setPositiveButton("Valider", new DialogInterface.OnClickListener() {
    	          public void onClick(DialogInterface dialog, int which) {
     
    	          	EditText tEnv = (EditText)envoiView.findViewById(R.id.ComNumEnvoi);
    	          	EditText tMot = (EditText)envoiView.findViewById(R.id.ComMot);
     
    	          	Editable numero = tEnv.getText();
    	          	Editable mot = tMot.getText();
     
    	          	SmsManager manager = SmsManager.getDefault();
    	          	manager .sendTextMessage(numero +"", null, "Salut, voici le nouveau défis : \n"+ mot, null, null);
     
    	          	setContentView(R.layout.joueur_activity);
    	        } });
     
    	      env.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {
    	          public void onClick(DialogInterface dialog, int which) {
     
    	        } });
    	      env.show();
    	}
     
    	 public void goSmsFin(View view) {
     
     
    	          	SmsManager manager = SmsManager.getDefault();
    	          	manager .sendTextMessage("0604650668", null, "Le defis est fini! \nBravo au vainqueur!! \n C'est parti pour la suite !!!", null, null); 
     
    //changer num de tel par variable tableau des numero en jeux !
     
    	          	setContentView(R.layout.activity_main);
     
    	}
    	 public void goAcc(View view) {
     
           	setContentView(R.layout.activity_main);
     
    }
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
     
            return true;
        }
     
    }

    Cordialement

    Flyer-73

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Salut,

    Edit: J'avais mal lu.

    Donc en gros affiche ta liste directement dans ton application avec un select sur chaque item. pour afficher cette liste passe par un CursorLoader cela s'affichera plus vite .

    Quand l'utilisateur aura choisi/créer son groupe tu pourra envoyer le SMS à l'ensemble du groupe.

    Ne passe pas par l'application par défaut cela risque d'embrouiller les utilisateurs.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Salut !

    Un grand merci pour ta réponse !

    Je regarde cela et je vois ce que ça donne !

    Et il ne s'agit en rien d'une applie de spam mais juste pour un groupe d’étudiants pour nous passer des infos sans avoir a chaque foi a re-selectionner les contacts !

    Merci

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Salut,

    Désolé j'avais mal interprété . Je pensais que tu voulais envoyer un SMS à tous les contacts et pas seulement ce que tu avais sélectionné .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Re salut,

    J'ai essayé de me crée la liste, j'ai toujours un problème quand elle doit s'afficher...

    J'explique :

    L’application arrive sur l'écran d’accueil et je clique sur mon bouton "ajouter un contact" l'appli ouvre bien une autre activité qui contient 2 editText un bouton "Contact" et un bouton "Ajouter"

    En cliquant sur mon bouton "Contact" je fait remplir les editText par le nom et le numéro du contact sélectionné dans le répertoire du téléphone. Jusque la sa fonctionne très bien mais après je souhaite que ces 2 champs soit ajoutés dans la liste et lors du clique sur le bouton "ajouter" l'appli crash ...

    Voici le logCat :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    03-03 14:53:39.633: I/ActivityManager(1176): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.iofdev.jeuxdecours/.MainActivity} from pid 1839
    03-03 14:53:39.633: W/WindowManager(1176): Failure taking screenshot for (230x383) to layer 21010
    03-03 14:53:39.755: D/AndroidRuntime(1839): Shutting down VM
    03-03 14:53:39.803: D/dalvikvm(1849): Not late-enabling CheckJNI (already on)
    03-03 14:53:39.803: I/AndroidRuntime(1839): NOTE: attach of thread 'Binder Thread #3' failed
    03-03 14:53:39.903: D/dalvikvm(1839): GC_CONCURRENT freed 98K, 77% free 477K/2048K, paused 2ms+66ms
    03-03 14:53:39.903: D/jdwp(1839): Got wake-up signal, bailing out of select
    03-03 14:53:39.903: D/dalvikvm(1839): Debugger has detached; object registry had 1 entries
    03-03 14:53:39.963: I/ActivityManager(1176): Start proc com.iofdev.jeuxdecours for activity com.iofdev.jeuxdecours/.MainActivity: pid=1849 uid=10040 gids={}
    03-03 14:53:40.083: I/WindowManager(1176): createSurface Window{4130f4f0 Starting com.iofdev.jeuxdecours paused=false}: DRAW NOW PENDING
    03-03 14:53:40.683: W/NetworkManagementSocketTagger(1176): setKernelCountSet(10040, 1) failed with errno -2
    03-03 14:53:42.103: D/dalvikvm(1849): GC_FOR_ALLOC freed 53K, 4% free 6900K/7171K, paused 114ms
    03-03 14:53:42.213: I/dalvikvm-heap(1849): Grow heap (frag case) to 11.778MB for 5184016-byte allocation
    03-03 14:53:42.413: D/dalvikvm(1849): GC_CONCURRENT freed 1K, 3% free 11961K/12295K, paused 7ms+8ms
    03-03 14:53:42.643: W/NetworkManagementSocketTagger(1176): setKernelCountSet(10005, 0) failed with errno -2
    03-03 14:53:44.353: D/dalvikvm(1176): GC_EXPLICIT freed 267K, 11% free 9237K/10311K, paused 11ms+32ms
    03-03 14:53:44.613: I/WindowManager(1176): createSurface Window{41241288 com.iofdev.jeuxdecours/com.iofdev.jeuxdecours.MainActivity paused=false}: DRAW NOW PENDING
    03-03 14:53:45.073: D/gralloc_goldfish(1849): Emulator without GPU emulation detected.
    03-03 14:53:45.313: I/ActivityManager(1176): Displayed com.iofdev.jeuxdecours/.MainActivity: +5s591ms
    03-03 14:54:10.612: D/dalvikvm(1359): GC_FOR_ALLOC freed 298K, 10% free 7472K/8263K, paused 106ms
    03-03 14:54:15.372: D/AndroidRuntime(1849): Shutting down VM
    03-03 14:54:15.372: W/dalvikvm(1849): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
    03-03 14:54:15.462: E/AndroidRuntime(1849): FATAL EXCEPTION: main
    03-03 14:54:15.462: E/AndroidRuntime(1849): java.lang.IllegalStateException: Could not execute method of the activity
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at android.view.View$1.onClick(View.java:3039)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at android.view.View.performClick(View.java:3480)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at android.view.View$PerformClick.run(View.java:13983)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at android.os.Handler.handleCallback(Handler.java:605)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at android.os.Looper.loop(Looper.java:137)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at android.app.ActivityThread.main(ActivityThread.java:4340)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at java.lang.reflect.Method.invokeNative(Native Method)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at java.lang.reflect.Method.invoke(Method.java:511)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at dalvik.system.NativeStart.main(Native Method)
    03-03 14:54:15.462: E/AndroidRuntime(1849): Caused by: java.lang.reflect.InvocationTargetException
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at java.lang.reflect.Method.invokeNative(Native Method)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at java.lang.reflect.Method.invoke(Method.java:511)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at android.view.View$1.onClick(View.java:3034)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	... 11 more
    03-03 14:54:15.462: E/AndroidRuntime(1849): Caused by: java.lang.NullPointerException
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at com.iofdev.jeuxdecours.JoueurAdapter.getCount(JoueurAdapter.java:25)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at android.widget.ListView.setAdapter(ListView.java:460)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	at com.iofdev.jeuxdecours.MainActivity.Ajouter(MainActivity.java:171)
    03-03 14:54:15.462: E/AndroidRuntime(1849): 	... 14 more
    03-03 14:54:15.552: W/ActivityManager(1176):   Force finishing activity com.iofdev.jeuxdecours/.MainActivity
    03-03 14:54:15.647: W/WindowManager(1176): Failure taking screenshot for (230x383) to layer 21015
    03-03 14:54:15.842: I/WindowManager(1176): createSurface Window{412d4698  paused=false}: DRAW NOW PENDING
    03-03 14:54:16.162: W/ActivityManager(1176): Activity pause timeout for ActivityRecord{4129e400 com.iofdev.jeuxdecours/.MainActivity}
    03-03 14:54:16.302: W/NetworkManagementSocketTagger(1176): setKernelCountSet(10005, 1) failed with errno -2
    03-03 14:54:16.632: I/WindowManager(1176): createSurface Window{4132c908 com.android.launcher/com.android.launcher2.Launcher paused=false}: DRAW NOW PENDING
    03-03 14:54:17.882: W/NetworkManagementSocketTagger(1176): setKernelCountSet(10040, 0) failed with errno -2
    03-03 14:54:18.792: I/Process(1849): Sending signal. PID: 1849 SIG: 9
    03-03 14:54:18.872: I/ActivityManager(1176): Process com.iofdev.jeuxdecours (pid 1849) has died.
    03-03 14:54:18.882: W/InputDispatcher(1176): channel '41241288 com.iofdev.jeuxdecours/com.iofdev.jeuxdecours.MainActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
    03-03 14:54:18.894: E/InputDispatcher(1176): channel '41241288 com.iofdev.jeuxdecours/com.iofdev.jeuxdecours.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
    03-03 14:54:18.922: I/WindowManager(1176): WIN DEATH: Window{41241288 com.iofdev.jeuxdecours/com.iofdev.jeuxdecours.MainActivity paused=false}
    03-03 14:54:18.922: W/InputDispatcher(1176): Attempted to unregister already unregistered input channel '41241288 com.iofdev.jeuxdecours/com.iofdev.jeuxdecours.MainActivity (server)'
    03-03 14:54:19.112: I/WindowManager(1176): WINDOW DIED Window{41241288 com.iofdev.jeuxdecours/com.iofdev.jeuxdecours.MainActivity paused=false}
    03-03 14:54:19.292: W/InputManagerService(1176): Got RemoteException sending setActive(false) notification to pid 1849 uid 10040
    03-03 14:54:20.472: D/dalvikvm(1359): GC_CONCURRENT freed 386K, 10% free 7487K/8263K, paused 21ms+37ms
    03-03 14:54:27.780: W/ActivityManager(1176): Activity destroy timeout for ActivityRecord{4129e400 com.iofdev.jeuxdecours/.MainActivity}
    03-03 15:00:36.072: D/dalvikvm(1259): GC_CONCURRENT freed 384K, 8% free 7309K/7943K, paused 9ms+12ms
    Voici le code source de l'appli :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
    public class MainActivity extends Activity {
     
    	ListView listContact;
    	List<Joueur> mesJoueurs = new ArrayList<Joueur>();
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);                        
        }
     
      public void showAlert(View view) 
      {
    	  setContentView(R.layout.alertdialogperso);
      }
      private void CreeUnJoueur() {
    	  // On recupere le nom 
    	    EditText NomJoueur = (EditText)findViewById(R.id.ComNom);
    	  	Editable nom = NomJoueur.getText();
    	  //Puis le numero
    	  	EditText NumJoueur = (EditText)findViewById(R.id.ComNum);
    	  	Editable num = NumJoueur.getText();
    	  //Enfin on ajoute	
    	     mesJoueurs.clear();
    	     mesJoueurs.add(new Joueur(""+ nom , ""+num));
    	    }
      private static final int CONTACT_PICKER_RESULT = 1001;
      public void doLaunchContactPicker(View view) {
    	    Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
    	            Contacts.CONTENT_URI);
    	    startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
    	}
     
      @Override  
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
          if (resultCode == RESULT_OK) {  
              switch (requestCode) {  
              case CONTACT_PICKER_RESULT:
                  final EditText phoneInput = (EditText) findViewById(R.id.ComNum);
                  final EditText nameInput = (EditText) findViewById(R.id.ComNom);
                  Cursor cursor = null;  
                  String phoneNumber = "";
                  String phoneName = "";
                  List<String> allNumbers = new ArrayList<String>();
                  List<String> allNames = new ArrayList<String>();
                  int phoneIdx = 0;
                  int nameIdx = 0;
                  try {  
                      Uri result = data.getData();  
                      String id = result.getLastPathSegment();  
                      cursor = getContentResolver().query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[] { id }, null);  
                      phoneIdx = cursor.getColumnIndex(Phone.DATA);
                      nameIdx = cursor.getColumnIndex(Phone.DISPLAY_NAME);
                      if (cursor.moveToFirst()) {
                          while (cursor.isAfterLast() == false) {
                              phoneNumber = cursor.getString(phoneIdx);
                              phoneName = cursor.getString(nameIdx);
                              allNumbers.add(phoneNumber);
                              allNames.add(phoneName);
                              cursor.moveToNext();
                          }
                      } else {
                          //no results actions
                      }  
                  } catch (Exception e) {  
                     //error actions
                  } finally {  
                      if (cursor != null) {  
                          cursor.close();
                      }
     
                      final CharSequence[] items = allNumbers.toArray(new String[allNumbers.size()]);
                      final CharSequence[] itemsN = allNames.toArray(new String[allNames.size()]);
                      AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                      builder.setTitle("Choose a number");
                      builder.setItems(items, new DialogInterface.OnClickListener() {
                          public void onClick(DialogInterface dialog, int item) {
                              String selectedNumber = items[item].toString();
                              String selectedName = itemsN[item].toString();
                              selectedNumber = selectedNumber.replace("-", "");
                              selectedName = selectedName.replace("-", "");
                              phoneInput.setText(selectedNumber);
                              nameInput.setText(selectedName);
                          }
                      });
                      AlertDialog alert = builder.create();
                      if(allNumbers.size() > 1) {
                          alert.show();
                      } else {
                          String selectedNumber = phoneNumber.toString();
                          String selectedName = itemsN.toString();
                          selectedNumber = selectedNumber.replace("-", "");
                          selectedName = selectedName.replace("-", "");
                          phoneInput.setText(selectedNumber);
                          nameInput.setText(selectedName);
                      }
     
                      if (phoneNumber.length() == 0) {  
     
                      }  
                  }  
                  break;  
              }  
          } else {
     
          }  
      }
     
    	public void showSelectedNumber(int type, String number, String name) 
    	{ 
    	    EditText num=(EditText)findViewById(R.id.ComNum);
            num.setText(number);
            EditText nom=(EditText)findViewById(R.id.ComNom);
            nom.setText(name);
    	}
     
     
     
    	public void liste(View view) 
            {
    		setContentView(R.layout.montexte);
    	}
    	public void Ajouter(View v) 
    	{
    		// Activitée alertdialogperso / Btn ajouter
     
    		 listContact = (ListView)findViewById(R.id.listContact);
     
    		  CreeUnJoueur();
     
    		  JoueurAdapter adapter = new JoueurAdapter(this, mesJoueurs);
     
    	      listContact.setAdapter(adapter);
     
    	      adapter.notifyDataSetChanged();
    	}
     
    }
    Pour moi tout devrais fonctionner ... mais ce n'est pas le cas et je n'arrive pas à interpréter ce que me dit le logCat ...

    Merci


    Flyer-73

  6. #6
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Caused by: java.lang.NullPointerException
    03-03 14:54:15.462: E/AndroidRuntime(1849): at com.iofdev.jeuxdecours.JoueurAdapter.getCount(JoueurAdapter.java:25)
    Tu peux nous montrer ta classe JoueurAdapter ?

    Merci.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Bien sur la voila :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    public class JoueurAdapter extends BaseAdapter {
     
    	List<Joueur> player;
    	LayoutInflater inflater;
     
    	public JoueurAdapter(Context context,List<Joueur> player) 
    	{
    		inflater = LayoutInflater.from(context);
    		this.player = player;
    	}
     
    	@Override
    	public int getCount() {
    		return player.size();
    	}
     
    	@Override
    	public Object getItem(int position) {
    		return player.get(position);
    	}
     
    	@Override
    	public long getItemId(int position) {
    		return position;
    	}
     
    	private class ViewHolder 
    	{
    		TextView tvTitre;
    		TextView tvAuteur;
    	}
     
    	@Override
    	public View getView(int position, View convertView, ViewGroup parent) {
    		ViewHolder holder;
     
    		if(convertView == null) {
    		holder = new ViewHolder();
    		convertView = inflater.inflate(R.layout.itemjoueurs, null);
    		holder.tvTitre = (TextView)convertView.findViewById(R.id.tvNom);
    		holder.tvAuteur = (TextView)convertView.findViewById(R.id.tvNumero);
    		convertView.setTag(holder);
    		} else {
    		holder = (ViewHolder) convertView.getTag();
    		}
     
    		holder.tvTitre.setText(player.get(position).getNom());
    		holder.tvAuteur.setText(player.get(position).getNumero());
     
     
     
    		return convertView;
     
    	}
     
    }
    Merci bcp !

  8. #8
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Mais comment remédier a cela ?

    Je t'avoue que je sèche un peu sur la question ...

    En tout cas merci pour ton aide c'est sympa !

    Flyer-73

  9. #9
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Salut,

    Ta variable player est null.
    On dirait que tu as un souci lors de l'initialisation de ton adapter.

    Peux tu controler que ton constructeur de ton adapter se fait bien de plus regarde ce que tu as dans la variable player dans le getCount-);
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Je sais qu'il y a une méthode pour tester la valeur des variable et tout pendant que l'appli est lancée mais je manque cruellement d’expérience et je ne sais pas mettre cela en place

    je publie mon constructeur ici :

    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
     
    public class Joueur {
    	private String nom;
    	private String numero;
     
    	public Joueur(String nom, String numero) {
    	this.nom = nom;
    	this.numero = numero;
    	}
     
    	public String getNom() {
    	return nom;
    	}
     
    	public void setNom(String nom) {
    	this.nom = nom;
    	}
     
    	public String getNumero() {
    	return numero;
    	}
     
    	public void setNumero(String numero) {
    	this.numero = numero;
    	}
    }
    Merci

    Flyer-73

  11. #11
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    http://nbenbourahla.developpez.com/t...plication/#LIV

    Regarde ce que tu as dans le constructeur de ton JoueurAdapter.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    J'ai regarder tout est a null ou 0 ...

    Comment puis-je remédier a cela ... je devrais avoir les valeurs de mes editText...?

    Flyer-73

  13. #13
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Salut,

    Qu'est ce que tu as dans la variable mesJoueurs ? et qu'est ce que tu as dans la variable player ?

    FYI : regarde la donnée de ta variable quand le code s’arrête a ton breakpoint. avant le setAdapter, et dans la fonction getCount.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Salut !

    Alors peut être que je fais mal la manip (sans doute !)

    mais la console de Debug me donne

    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
    <terminated>New_configuration [Android Application]	
    	<disconnected>DalvikVM [localhost:8668]	
    New_configuration [Android Application]	
    	DalvikVM [localhost:8668]	
    		Thread [<1> main] (Suspended (exception IllegalStateException))	
    			<VM does not provide monitor information>	
    			View$1.onClick(View) line: 3026	
    			Button(View).performClick() line: 3480	
    			View$PerformClick.run() line: 13983	
    			ViewRootImpl(Handler).handleCallback(Message) line: 605	
    			ViewRootImpl(Handler).dispatchMessage(Message) line: 92	
    			Looper.loop() line: 137	
    			ActivityThread.main(String[]) line: 4340	
    			Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]	
    			Method.invoke(Object, Object...) line: 511	
    			ZygoteInit$MethodAndArgsCaller.run() line: 784	
    			ZygoteInit.main(String[]) line: 551	
    		Thread [<10> Binder Thread #2] (Running)	
    		Thread [<9> Binder Thread #1] (Running)	
    		Daemon Thread [<8> FinalizerWatchdogDaemon] (Running)	
    		Daemon Thread [<7> FinalizerDaemon] (Running)	
    		Daemon Thread [<6> ReferenceQueueDaemon] (Running)
    Rien en rapport avec les variables "mesJoueurs" et "player"

    J'ai bien mis les breakpoints au bons endroits ...

    Flyer-73

  15. #15
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Salut,

    Tu as bien lancé ton application en debug ?
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Oui je lance avec la commande "debug As" et le programme se bloque bien au bon moment ...

    Flyer-73

  17. #17
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Est ce que tu arrives a rentrer dans la fonction Ajouter ?
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Ajouter me donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    val$handlerName 	"Ajouter" (id=830024835744)	
    	count                 	7	
    	hashCode	                698998226	
    	offset                        0	
    	value	                        (id=830024835776)	
    		[0]	                A	
    		[1]	                j	
    		[2]	                o	
    		[3]	                u	
    		[4]	                t	
    		[5]	                e	
    		[6]	                r
    Flyer-73

  19. #19
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Bonjour,

    Je pense que tu t'y prend mal pour initialiser ton adapter.

    En effet, je te conseille de l'initialiser dans ton onCreate directement. Il faut donc que tu déplaces les trois lignes suivante (dans ta fonction "Ajouter") dans le onCreate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    listContact = (ListView)findViewById(R.id.listContact);
    JoueurAdapter adapter = new JoueurAdapter(this, mesJoueurs);
    listContact.setAdapter(adapter);
    De plus, lorsque tu ajoutes un élément dans ta liste, tu fais un clear (). Il ne faut surtout pas faire cela. En effet, tu auras qu'une seul entré dans ton tableau puisque cette fonction supprime tout ce qu'il y a dedans.

    Pour finir, Tu changes souvent de layout dans ton activité (setContentView). C'est à éviter un maximum. en effet, si tu fais comme ceci, l'application n'arrivera certainement plus à retrouver ta liste et tu auras un NullPointerException.

  20. #20
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Salut !

    Merci cette méthode marche très bien j'ai également pour que cela marche mis la liste dans le main_activity.xml

    Maintenant j'ai une autre question, comment on récupère uniquement les numéros de téléphones qui ont été ajoutés cette liste dans une variable qui me permettrait d'utiliser ce code pour l'envoi de sms :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SmsManager sms = SmsManager.getDefault();
    	       sms.sendTextMessage(phoneNumber, null, message, null, null);
    Où phoneNumber est la variable qui contient tous les numéros que j'ai envoyé dans la listView !

    Merci

    Flyer-73

Discussions similaires

  1. Créer une liste de contacts
    Par elemaine dans le forum Android
    Réponses: 0
    Dernier message: 20/07/2014, 16h19
  2. Créer une liste de contacts pour des tests
    Par Gaetch dans le forum Android
    Réponses: 1
    Dernier message: 11/02/2012, 16h37
  3. Réponses: 4
    Dernier message: 01/07/2010, 19h45
  4. Réponses: 2
    Dernier message: 03/07/2006, 20h14
  5. Réponses: 5
    Dernier message: 29/09/2005, 14h37

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