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 :

Probleme accession id fichier xml.


Sujet :

Composants graphiques Android

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2012
    Messages : 118
    Points : 40
    Points
    40
    Par défaut Probleme accession id fichier xml.
    Bonjour,
    J'ai créé une class Toto qui extends Activity, j'ai créé un fichier xml nommé arank. Dans ma class Toto, j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	@Override
        public void onCreate(Bundle savedInstanceState) {         
     
           super.onCreate(savedInstanceState);    
           setContentView(R.layout.arank);
       }
    Dans mon fichier xml j'ai:
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
     
        <ListView android:id="@+id/Score"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            >
        </ListView>
     
     
    </LinearLayout>
    Je voudrais accéder au membre Score. Faire un Score.add(truc); si c'est possible. Mais je n'arrive pas à l'appeler. De plus je ne suis pas sur de android:id="@+id/Score", je ne comprends pas la partie "@+id/" (j'ai pris ça sur le net vu que id="Score" ne marchait pas).

    Merci de votre aide.

  2. #2
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    décembre 2004
    Messages
    2 492
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2004
    Messages : 2 492
    Points : 4 063
    Points
    4 063
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        @Override
        public void onCreate(Bundle savedInstanceState) {         
     
           super.onCreate(savedInstanceState);    
           setContentView(R.layout.arank);
           ListView l = (ListView) findViewById(R.id.Score);
       }
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2012
    Messages : 118
    Points : 40
    Points
    40
    Par défaut
    Ok merci. Une ListView c'est comme une listbox en xaml ? Je voudrais la même chose qu'une listbox. Donc faire un add("chaine de carac") mais je ne trouve pas cette option. C'est une list de int que je voudrais ajouter.

  4. #4
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    décembre 2004
    Messages
    2 492
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2004
    Messages : 2 492
    Points : 4 063
    Points
    4 063
    Par défaut
    Sur Android, il faut passer par un Adapter pour remplir ta liste, et c'est cet adapter que tu affectes ensuite à ta liste. Il y a des tutoriels à ce sujet.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2012
    Messages : 118
    Points : 40
    Points
    40
    Par défaut
    Oui j'ai fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Score = (ListView) findViewById(R.id.Score);
    adapter = new ArrayAdapter<Integer>(this,R.layout.arank,score);
                Score.setAdapter(adapter);
    Mais comme j'essaye de mixer avec libgdx ça par en cacahuète, enfin ça m'affiche rien, mais dans le Graphical Layout je vois bien ma listview.
    J'ai ce message d'erreur:
    System services not available to Activities before onCreate()
    lors de cette ligne:
    adapter = new ArrayAdapter<Integer>(this,R.layout.arank,score);

  6. #6
    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
    R.layout.arank dans l'adapter ?
    Ce n'est pas le layout qui contient la list-view ?

    Le layout passé à l'adapter correspond au layout qui sera utilisé par chaque item. Dans le doute, utiliser ceux par défaut d'android: android.R.layout.simple_list_item_1 par exemple.

    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2012
    Messages : 118
    Points : 40
    Points
    40
    Par défaut
    arank c'est le layout où il y a ma listview, c'est un layout que j'ai créé. Je vais essayé d'expliquer l'architecture de mon programme. C'est un jeu vidéo réaliser avec la libgdx. J'ai trois écran qui implement Screen de libgdx il me semble:

    -Le menu.
    -Le jeu en lui même.
    -Le classement en ligne.

    Dans le classement en ligne, étant donnée qui pourrait y avoir plein de joueur (même si j'ai limité à 100 le top, ça montreras donc les 100 meilleurs scores). L'écran de l'appareil serait trop petit pour afficher les 100 scores. J'ai donc décidé de mettre dans la partie Classement, un scrolling, donc ma listview, je n'y connais pas grand chose en android, c'est peu être pas se qu'il y a de plus adapté une listview (j'ai cru voir APRES qu'on pouvait le faire avec libgdx mais tant pis, ça me permettra de mieu comprendre comment les activity marche, me suis-je dis et j'avais un peu la flemme de tout recommencer ^^).
    J'ai donc mixer la libgdx et le android natif (la listview). J'ai créer mon arank.xml (layout), et j'ai ma class Classement dans la partie Android de mon projet.
    J'extends Classement de Activity.

    C'est tout se que je fais. Je pense qu'il me manque des étapes, comme changer d'activity, je crois qu'il faudrais que je mette ça quelque part mais je n'en suis pas sur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Intent myIntent = new Intent(this, AvitivityName.class);
    startActivity(myIntent);
    EDIT: Il me semble que onCreate() n'est jamais appeler car j'ai eu cette exeption "System services not available to Activities before onCreate()" à l’exécution de cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    adapter = new ArrayAdapter<Integer>(this,R.layout.arank,score);
    De plus le programme ne passe pas par le breakpoint mis dans la fonction onCreate().
    Voila si vous pouviez m'aider se serait sympas, a+.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2012
    Messages : 24
    Points : 33
    Points
    33
    Par défaut Item ListView
    Bonjour,

    Une listView est composée d'un ensemble d'item.et un item possède une vue personnalisée qui pourra être une vue système accessible par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    android.R.layout.type_layout
    ou bien un layout XML personnalisée que tu code manuellement si tu veux faire une listView personnalisée.

    Merci

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2012
    Messages : 118
    Points : 40
    Points
    40
    Par défaut
    Justement j'ai créé mon propre XML. Donc je doit faire R.layout.nom_du_fichier_XML (arank ici).
    Je rentre pas dans la fonction onCreate() il me manque un truc.

  10. #10
    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
    Personnellement je ne comprends pas....

    On parle bien de deux layouts:

    Un premier layout (celui de l'activité) va contenir le widget ListView. Vu le premier post, il s'agit de R.layout.arank .
    Une fois l'appel à setContentView effectué, récupérer le widget ListView se fait par simple appel à findViewById(R.id.Score), pour lui passer un "adapter" par exemple.

    Un adapter qui fait le lien entre les données, et chaque item affiché dans la ListView. Pour ce faire, l'adapter a besoin de données (ArrayAdapter permet de passer une liste ou une array pour l'initialisation), et d'un layout à utiliser pour chaque entrée de la liste. Ce layout ne *PEUT PAS* être R.layout.rank ! (puisque celui-ci contient une ListView ???? )
    Donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    adapter = new ArrayAdapter<Integer>(this,R.layout.arank,score);
    est forcément faux.
    D'ou la suggestion de remplacer ce layout par un "prédéfini" chez android, par exemple: android.R.layout.simple_list_item_1 (par exemple, utiliser l'auto-completion d'eclipse pour rerouver le bon identifiant).


    Maintenant, si R.layout.arank correspond bien à un layout d'item de liste... alors il n'a rien à faire dans le setContentView ....


    Conseil: utiliser des identifiants reconnaissables pour les élements graphiques... par exemple:
    layout/activity_main.xml
    layout/fragment_toto.xml
    layout/fragment_tata.xml
    layout/item_score.xml
    ...

    Comme pour les classes associées:
    MainActivity
    TotoFragment
    TataFragment
    ScoreAdapter
    ...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2012
    Messages : 118
    Points : 40
    Points
    40
    Par défaut
    Alors,
    On parle bien de deux layouts:
    Il me semble que j'en ai un seul. Celui là: (arank)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
     
        <ListView
            android:id="@+id/Score"
            android:layout_width="wrap_content"
            android:layout_height="match_parent" >
        </ListView>
     
    </LinearLayout>
    Un premier layout (celui de l'activité) va contenir le widget ListView. Vu le premier post, il s'agit de R.layout.arank .
    Une fois l'appel à setContentView effectué, récupérer le widget ListView se fait par simple appel à findViewById(R.id.Score), pour lui passer un "adapter" par exemple.
    Oui dans la fonction onCreate() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	@Override
        public void onCreate(Bundle savedInstanceState) {         
     
           super.onCreate(savedInstanceState);    
           setContentView(R.layout.arank);
           Score = (ListView) findViewById(R.id.Score);
       }
    JE PRECISE QUE MON CODE NE RENTRE JAMAIS A L'INTERIEUR.

    Ensuite:

    Un adapter qui fait le lien entre les données, et chaque item affiché dans la ListView. Pour ce faire, l'adapter a besoin de données (ArrayAdapter permet de passer une liste ou une array pour l'initialisation), et d'un layout à utiliser pour chaque entrée de la liste. Ce layout ne *PEUT PAS* être R.layout.rank ! (puisque celui-ci contient une ListView ???? )
    J'ai du mal a comprendre les paramètres qu'il faut donner. Il fallait lui donner un layout, comme arank était le seul que j'avais.

  12. #12
    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
    Si l'activité est lancée tu rentres forcément dans le onCreate
    Ou sinon, l'application crash avec un problème de création de l'activité !

    Tu n'as rien dans le logcat ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2012
    Messages : 118
    Points : 40
    Points
    40
    Par défaut
    Si l'activité est lancée tu rentres forcément dans le onCreate
    Ou sinon, l'application crash avec un problème de création de l'activité !
    Je travail avec la libgdx. Dans un précédent poste je me demandais comment démarer une activité Android à partir d'un projet libgdx:

    http://www.developpez.net/forums/d14...tivite-libgdx/

    Dans ce poste on me dit:

    Et pense à lancer ton activité dans le thread UI principal de l'appli android (et non le thread de libgdx
    Je ne sais pas si ça viens de là. Si j'ai bien compris, pour lancer une activité. Il faut utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Intent myIntent = new Intent(this, AvitivityName.class);
    startActivity(myIntent);
    Je tiens a préciser que je ne fais JAMAIS les lignes du dessus, est-ce que je dois le faire.

    Comme je suis dans la partie gdx mon point d’entrée n'est pas ma classe qui hérite de Activity. Mon point d'entrée c'est la fonction create() de la class Game (qui appartient à ligdx). Et ensuite ça boucle sur le render() de la classe Game.

    Merci.

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : novembre 2012
    Messages : 118
    Points : 40
    Points
    40
    Par défaut
    J'ai plus ou moins trouvé la solution. Je cherche à présent à commencer une activité depuis cette même class. Par exemple la classe A est une activité, par une fonction quelconque je rentre dans cette classe et je veux start cette même activité. Si vous avez une idée merci.

Discussions similaires

  1. probleme avec lecture fichier XML
    Par aztec dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 24/10/2010, 10h51
  2. PROBLEME de chargement fichier XML dans une clé USB
    Par alas70 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 27/05/2008, 18h12
  3. Python probleme pour traitement fichier Xml avec l'API dom
    Par chenimitz dans le forum Général Python
    Réponses: 11
    Dernier message: 30/10/2007, 19h34
  4. probleme taille image fichier xml
    Par kichon dans le forum Flash
    Réponses: 5
    Dernier message: 11/10/2006, 13h51
  5. Probleme avec les fichiers XML
    Par fle7a dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 17/07/2006, 10h32

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