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 :

Communication activités d'un menu à onglets


Sujet :

Composants graphiques Android

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Communication activités d'un menu à onglets
    Mon problème est le suivant :

    J'ai un menu à onglets avec 3 onglets. Dans l'onglet n°2 j'appuie sur un bouton, lors de l'appui je souhaite mettre à jour une list view dans l'onglet n°1. Seulement je bloque, il me jette à chaque fois, voici le log d'erreur :

    02-23 14:53:22.837: E/AndroidRuntime(1183): FATAL EXCEPTION: main
    02-23 14:53:22.837: E/AndroidRuntime(1183): Process: com.example.onglets, PID: 1183
    02-23 14:53:22.837: E/AndroidRuntime(1183): java.lang.IllegalStateException: Could not execute method of the activity
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at android.view.View$1.onClick(View.java:3823)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at android.view.View.performClick(View.java:4438)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at android.view.View$PerformClick.run(View.java:18422)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at android.os.Handler.handleCallback(Handler.java:733)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at android.os.Handler.dispatchMessage(Handler.java:95)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at android.os.Looper.loop(Looper.java:136)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at android.app.ActivityThread.main(ActivityThread.java:5017)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at java.lang.reflect.Method.invokeNative(Native Method)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at java.lang.reflect.Method.invoke(Method.java:515)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at dalvik.system.NativeStart.main(Native Method)
    02-23 14:53:22.837: E/AndroidRuntime(1183): Caused by: java.lang.reflect.InvocationTargetException
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at java.lang.reflect.Method.invokeNative(Native Method)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at java.lang.reflect.Method.invoke(Method.java:515)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at android.view.View$1.onClick(View.java:3818)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	... 11 more
    02-23 14:53:22.837: E/AndroidRuntime(1183): Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate()
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at android.app.Activity.getSystemService(Activity.java:4532)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at android.widget.SimpleAdapter.<init>(SimpleAdapter.java:85)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at com.example.onglets.Tab1.populateListView(Tab1.java:81)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	at com.example.onglets.Tab2.Alimentation_click(Tab2.java:44)
    02-23 14:53:22.837: E/AndroidRuntime(1183): 	... 14 more
    
    Tab1.java :

    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
    public class Tab1 extends Activity {
        /** Called when the activity is first created. */
    
    	@Override
        public void onCreate(Bundle savedInstanceState) {
        
            super.onCreate(savedInstanceState);
            
            setContentView(R.layout.tab1);
            
            
            populateListView("lol", "5000 €");
    
           
            
            registerClickCallBack();
            
        
         
        }
    	
    	//TextView cat = new TextView(getBaseContext());
    ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();
    HashMap<String, String> map;
        
        public void populateListView(String poste, String montant) {
    		// Création des noms à ajouter dans la listView
    
        	 
        	//Création d'une HashMap pour insérer les informations du premier item de notre listView
             map = new HashMap<String, String>();
             //on insère un élément titre que l'on récupérera dans le textView titre créé dans le fichier affichageitem.xml
             map.put("titre", poste);
             //on insère un élément description que l'on récupérera dans le textView description créé dans le fichier affichageitem.xml
             map.put("description", montant);
             //on insère la référence à l'image (convertit en String car normalement c'est un int) que l'on récupérera dans l'imageView créé dans le fichier affichageitem.xml
             map.put("img", String.valueOf(R.drawable.fleche));
             //enfin on ajoute cette hashMap dans la arrayList
             listItem.add(map);
    
             
           //Création d'un SimpleAdapter qui se chargera de mettre les items présent dans notre list (listItem) dans la vue affichageitem
             SimpleAdapter mSchedule = new SimpleAdapter (Tab1.this, listItem, R.layout.data_item, Ligne 81
             new String[] {"img", "titre", "description"}, new int[] {R.id.img, R.id.titre, R.id.description});
             ListView list = (ListView) findViewById(R.id.listView1);
             //On attribut à notre listView l'adapter que l'on vient de créer
             list.setAdapter(mSchedule);
        	 //List<E_S> values = bdd.selectionnerAll();
            
    		
    		//ArrayAdapter<E_S> adapter = new ArrayAdapter<E_S>( this, R.layout.data_item, values);
    		//ListView list = (ListView) findViewById(R.id.listView1);
    		//list.setAdapter(adapter);
    		
    	}
            
        	
        	public void registerClickCallBack() {
        		ListView list = (ListView) findViewById(R.id.listView1);
        		list.setOnItemClickListener(new AdapterView.OnItemClickListener(){
    
        			@Override
        			public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) {
        			TextView textView = (TextView) viewClicked; 
        			String message = textView.getText().toString(); 
        			Toast.makeText(Tab1.this, message, Toast.LENGTH_LONG).show();
        			}	
        		});
        				
        			}
    
    }
    Tab2.java :

    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
    public class Tab2 extends Activity {
        /** Called when the activity is first created. */
    	
    	Tab1 t = new Tab1();
    	
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.tab2);
        }
        
        
        public void Alimentation_click (View v){
        	
       	
        	t.populateListView("ok2", "50 €"); Ligne 44
        	
    		    	
        	}
        
    	
    }
    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Un menu à onglet ne se fait en principe pas avec des activités mais des fragments ce qui permettrait de résoudre ton problème simplement.

    Pour ton problème , quel est l'intérêt de modifier tab1 depuis tab2 alors que tab1 n'est pas affiché ? Il suffit simplement de mettre tab1 à jour dans son onResume()

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Rep
    Je ne sais pas si j'ai été très clair. Dans mon Tab2, je clique sur un bouton "Alimentation", sur ce clique, je veux appeler la méthode populateListView, avec des arguments, qui se trouve dans la classe Tab1.

    Par conséquent ce que je veux c'est quand j'appuie sur le bouton, et que je revient sur mon Tab1 je dois voir ma ListView qui a changée.

    Le menu à onglets est fait avec des fragments !

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Le menu à onglets est fait avec des fragments !
    A la vue de ton code j'en doute, puisque tes "tab" dérive de Activity

    J'ai bien compris ce que tu voulais faire , c'est juste que tu n'utilises pas la bonne méthode.

    Soit tu as effectivement des fragments et tu à donc une seule activity et X fragments. Les données à mettre à jour sont contenues dans l'activity et donc de ce fait chaque fragment peut interagir avec facilement.
    Voir : http://developer.android.com/trainin...unicating.html pour le détail

    Soit tu fonctionnes avec plusieurs activities auquel cas il faut que tu trouve une solution pour rendre tes données globales à tes activities et mettre à jour la listview quand l'activity est affichée.

    Dans tous les cas on ne met pas à jour une listview si elle n'est pas affichée. On met à jour les données et quand le fragments/activity est affichée on met à jour la listview. En général on instancie pas une activity comme tu le fais dans ton tab2.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Alors j'ai eu le temps de vérifier et effectivement ce sont des Activity. Du coup, je comprend qu'on ne puisse pas l'instancier. Quelle solution, comment je peux rendre des fonctions accessibles par tous ?

Discussions similaires

  1. Menu à onglet et sous menu horizontal
    Par gscorpio dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 26/11/2008, 15h51
  2. [JavaScript] [SRC] Menu à onglets
    Par Auteur dans le forum Contribuez
    Réponses: 23
    Dernier message: 12/11/2008, 16h41
  3. Menu à onglets
    Par Dark Neggror dans le forum Débuter
    Réponses: 1
    Dernier message: 01/06/2008, 21h35
  4. Menu onglet jsf
    Par stephane92400 dans le forum JSF
    Réponses: 1
    Dernier message: 07/09/2007, 14h35
  5. Réponses: 5
    Dernier message: 28/07/2006, 15h33

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