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 :

Récupération dynamique d'une image locale


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Récupération dynamique d'une image locale
    Bonjour,
    je souhaiterais réaliser une application de jeux pour enfants, ou l'utilisateur doit saisir correctement le mot correspondant a l'image. Lion, chat, ....

    Mon souci est de savoir comment je peut passer dynamiquement au moment de la création de l'activité l'image a intégrer dans l'image view.
    La plupart des informations que je trouve, c'est via le net et je souhaiterai le faire localement au moment de la création de l'activity si quelqu'un a une idée.

    SVP

    Merci pour votre aide

  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
    Heu j'ai pas tout suivi...

    Si c'est coller une ressource à l'ImageView: setImageResource()
    Si c'est choisir une image dans les fichiers multimédia de l'appareil, Intent.ACTION_PICK (avec comme mime-type image/*)
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Heu j'ai pas tout suivi...

    Si c'est coller une ressource à l'ImageView: setImageResource()
    Si c'est choisir une image dans les fichiers multimédia de l'appareil, Intent.ACTION_PICK (avec comme mime-type image/*)
    Il s'agit effectivement de coller une ressource

    j'utilise comme code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	protected ImageView imageToChange;
     
    protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		imageToChange = (ImageView)findViewById(R.id.imageToChange);
    		imageToChange.setImageResource(R.drawable.elephant);
    }
    Cela me renvoie un null pointer exception et pourtant si je le mets directement dans le xml ça marche alors je ne comprends pas

    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
     
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#000000"
        android:gravity="center"
        tools:context=".GameActivity" >
     
        <LinearLayout
            android:id="@+id/Image"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:gravity="top"
            android:orientation="vertical"
            android:paddingTop="10dp" >
     
            <ImageView
                android:id="@+id/imageToChange"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:src="@drawable/elephant"/>
        </LinearLayout>
     
    </RelativeLayout>

  4. #4
    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 le code du onCreate() est complet il manque le setContentView() et du coup findViewById() renvoit null
    D'autre part, dans le XML l'image s'appelle "@+id/imageView" et pas "@+id/imageToChange"

    De toute manière, la ligne indiquée par la NPE doit être imageToChange.setImageResource(R.drawable.elephant);

    Ce qui veux dire que imageToChange est null.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par nicroman Voir le message
    si le code du onCreate() est complet il manque le setContentView() et du coup findViewById() renvoit null


    De toute manière, la ligne indiquée par la NPE doit être imageToChange.setImageResource(R.drawable.elephant);

    Ce qui veux dire que imageToChange est null.
    Tu as raison le setContentView était déclaré plus bas et provoqué une erreur.
    Maintenant cela marche mais je ne sais pas pourquoi une fois sur trois sa crash

    Citation Envoyé par nicroman Voir le message
    D'autre part, dans le XML l'image s'appelle "@+id/imageView" et pas "@+id/imageToChange"
    Erreur de fichier xml je vais réediter mon message

  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
    Citation Envoyé par atchoum34 Voir le message
    Maintenant cela marche mais je ne sais pas pourquoi une fois sur trois sa crash
    Donc cela ne fonctionne pas
    Un programme étant une machine à états finis, le 1 fois sur trois n'existe pas, il existe toujours un chemin 100% reproductible.
    Mais bon, dans tous les cas, quand tu dis "ça crash" , tu veux dire "force close" ?
    Quel est le logcat ? (copie de l'exception *en entier*)
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Tiens voici mon logcat d'erreur :
    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
     
    01-14 09:46:20.161: E/AndroidRuntime(788): FATAL EXCEPTION: main
    01-14 09:46:20.161: E/AndroidRuntime(788): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.project/com.example.project.GameActivity}: java.lang.IndexOutOfBoundsException: Invalid index 26, size is 26
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at android.app.ActivityThread.access$600(ActivityThread.java:141)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at android.os.Looper.loop(Looper.java:137)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at android.app.ActivityThread.main(ActivityThread.java:5039)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at java.lang.reflect.Method.invokeNative(Native Method)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at java.lang.reflect.Method.invoke(Method.java:511)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at dalvik.system.NativeStart.main(Native Method)
    01-14 09:46:20.161: E/AndroidRuntime(788): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 26, size is 26
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at java.util.ArrayList.get(ArrayList.java:304)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at com.example.project.GameActivity.setButton(GameActivity.java:100)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at com.example.project.GameActivity.onCreate(GameActivity.java:68)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at android.app.Activity.performCreate(Activity.java:5104)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
    01-14 09:46:20.161: E/AndroidRuntime(788): 	... 11 more

  8. #8
    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
    Fichier GameActivity.java ,ligne 100, fonction "setButton"

    Utilisation d'un "List.get(index)" avec un index trop grand (== à la taille de la liste).

    On peut voir le code de la fonction setButton de GameActivity.java ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Fichier GameActivity.java ,ligne 100, fonction "setButton"

    Utilisation d'un "List.get(index)" avec un index trop grand (== à la taille de la liste).

    On peut voir le code de la fonction setButton de GameActivity.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
     
    private void setButton() {
    //Bouton placer statiquement que je récupère dans une liste pour l'utiliser
    		buttonList.add((Button)findViewById(R.id.Button01));
    		buttonList.add((Button)findViewById(R.id.Button02));
    		buttonList.add((Button)findViewById(R.id.Button03));
    		buttonList.add((Button)findViewById(R.id.Button04));
    		buttonList.add((Button)findViewById(R.id.Button05));
    		buttonList.add((Button)findViewById(R.id.Button06));
    		buttonList.add((Button)findViewById(R.id.Button07));
    		buttonList.add((Button)findViewById(R.id.Button08));
    		buttonList.add((Button)findViewById(R.id.Button09));
    		buttonList.add((Button)findViewById(R.id.Button10));
    		buttonList.add((Button)findViewById(R.id.Button11));
    		buttonList.add((Button)findViewById(R.id.Button12));
    		buttonList.add((Button)findViewById(R.id.Button13));
    		buttonList.add((Button)findViewById(R.id.Button14));
     
    		//Liste de lettre a rajouter pour completer les boutons
    		ArrayList<String>lettreEnPlus = new ArrayList<String>();
    		lettreEnPlus.addAll(Arrays.asList("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"));
    		//Liste de valeur a donner au boutons
    		ArrayList<String>tmp = new ArrayList<String>();
    		//Pour garder la reponse_List pour les comparaisons de reponse
    		tmp.addAll(reponse_List);
    		int index = 0;
    		int i = tmp.size();
    		//On rajoute des valeurs au fond de la liste des possibilité (14 Bouttons)
    		while(i < buttonList.size())
    		{
    			index = (int) Math.round(Math.random()*lettreEnPlus.size());
    			tmp.add(lettreEnPlus.get(index));
    			i++;
    		}
    		//On melange
    		Collections.shuffle(tmp);
    		//Puis on affecte a chaque bouton une nouvelle lettre ainsi qu'un evenement
    		for ( i = 0; i < buttonList.size();i++)
    		{
    			buttonList.get(i).setText(tmp.get(i));
    			buttonList.get(i).setOnClickListener(this);
    		}
    	}

  10. #10
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    index = (int) Math.round(Math.random()*lettreEnPlus.size());
    tmp.add(lettreEnPlus.get(index));
    T'as pas peur dis moi
    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.

  11. #11
    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
    Math.random:
    Résultat: 0 <= value < 1

    Math.random * liste.size
    Résultat: 0 <= value < liste.size

    Math.round:
    Résultat: 0 <= value <= liste.size

    Et voila, erreur d'algorithme... puisqu'on a potentiellement un index == liste.size
    Au passage 0 et liste.size on deux fois moins de chance de sortir que les autres valeurs.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

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

Discussions similaires

  1. [Débutant] [C#] Récupération dynamique d'une image en ressource
    Par BlackAlpha dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/07/2014, 21h48
  2. Afficher une image locale
    Par safisafi dans le forum ASP.NET
    Réponses: 7
    Dernier message: 20/03/2007, 09h00
  3. Réponses: 10
    Dernier message: 24/05/2006, 17h28
  4. [Tableaux] Ajouter l'affichage dynamique d'une image
    Par leloup84 dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 09h14
  5. [CR.NET]Chargement dynamique d'une image
    Par Moah dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 14/12/2004, 11h46

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