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 :

Ajouter une image comme "background" dans un ''TextView" dans le code Java ?


Sujet :

Composants graphiques Android

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 26
    Points
    26
    Par défaut Ajouter une image comme "background" dans un ''TextView" dans le code Java ?
    Bonsoir,
    désolé pour le dérangement.

    je veux afficher une image comme fond "background" d'un TextView mais il y a un problème quelque part dans mon code , le logcat affiche java.lang.NullPointerException

    mais le problème résout lorsque je change TextView par ImageView et "setBackgroundDrawable" par "setImageDrawable"

    Est ce que quelqu'un peut m'aider svp?

    Merci d'avance.


    voila mon code:

    Dans onCreate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Thread th1=new Thread(new Runnable() {
                String imageUrl = "http://192.168.56.2/photo/cdeNonT.php?id=1";
                TextView image = (TextView) findViewById(R.id.col2);
                @Override
                public void run() {
                    Drawable drw =LoadImageFromWebOperations(imageUrl);
                    image.setBackgroundDrawable(drw);
                }
            });
            th1.start();

    la méthode LoadImageFromWebOperations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private Drawable LoadImageFromWebOperations(String strPhotoUrl) {
            try {
                InputStream is = (InputStream) new URL(strPhotoUrl).getContent();
                Drawable d = Drawable.createFromStream(is, "src name");
                return d;
            } catch (Exception e) {
                System.out.println("Exc=" + e);
                return null;
            }
        }

  2. #2
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Points : 634
    Points
    634
    Par défaut
    Bonjour dimass,

    comment tu te portes ? Utilise la méthode setBackground() tout simplement.

    La méthode setBackgroundDrawable() est obselète dépuis la version 16.

    Si çà ne marche toujours pas alors, essaie de vérifier si les ressources sont disponibles et si l'image est réellement

    chargée à partir du site. !


    __salut !
    Aujourd'hui apprenant, demain appreneur.
    N'accuse pas le puits d'être trop profond,
    c'est peut-être ta corde qui est trop courte

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 26
    Points
    26
    Par défaut
    Merci pour votre réponse.

    je change setBackgroundDrawable par setBackground , et la même exception s'affiche toujours
    et il me demande d'ajouter @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    et toujours le logcat affiche java.lang.NullPointerException

    Nom : whitey-glossy-rectangle-button-hi.png
Affichages : 766
Taille : 358,1 Ko

  4. #4
    Membre éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Points : 1 014
    Points
    1 014
    Par défaut
    Salut,

    Le premier point vient du fait que la fonction setBackground() n'existe que depuis l'API16. or ton programme est fait pour marcher à partir de l'API 15. il y a donc une incohérence.
    Deux solutions :
    - Tu redéfinis ta version minimale d'API de 15 à 16 dans ton manifest
    - Tu utilises des @TargetApi pour indiquer que si ton programme tourne en API15 il utilise setBackgroundDrawable() et s'il tourne en plus il utilise setBackground().

    Le deuxième point vient du fait que tu manipule un objet null. Peux-tu indiquer à quelle ligne cette erreur se produit s'il te plait ?
    "On sera toujours mieux installé assis en 1ère que debout en 2nde", un illustre inconnu


    Avant de poser une question vérifiez si elle n'a pas déjà une réponse dans les cours et tutoriels
    Si votre problème est pensez à marquer la conversation comme telle
    Si un message est utile, pertinent, et/ou vous êtes d'accord avec, pensez à à l'inverse s'il est inutile, faux ou que vous n'êtes pas d'accord, pensez à

  5. #5
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Points : 634
    Points
    634
    Par défaut
    Bonjour dimass,

    Tu n'as pas dis la ligne qui génère l'Exception. En fait ce n'est le fait de vouloir modifier

    l'arrière plan qui génère l'Exception, c'est plutôt le fait d'appeler une méthode sur un Objet NULL.

    A mon avis c'est cette ligne : (TextView) findViewById(R.id.col2); qui te renvoie un pointer NULL

    Vérifie tout simplement si la ressource est exactement celle que tu veux accéder et a le même type.

    Egalement il n'est permis de modifier l'UI dans un Thread autre que le ThreadUI, même si tu gère cette exception, tu auras

    une autre dans ton Thread. Le mieux c'est la méthode Activity.runOnUiThread(...)

    __salut !
    Aujourd'hui apprenant, demain appreneur.
    N'accuse pas le puits d'être trop profond,
    c'est peut-être ta corde qui est trop courte

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 26
    Points
    26
    Par défaut
    Merci pour votre réponse.

    la ligne qui génère l'exception :
    image.setBackground(drw);

  7. #7
    Membre éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Points : 1 014
    Points
    1 014
    Par défaut
    lankoande a donc raison. Il s'agit de ton objet image qui est null et sur lequel tu essaie d'appeler setBackground(). Vérifie que la ligne suivante te renvoi bien la bonne ressource.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextView image = (TextView) findViewById(R.id.col2);
    "On sera toujours mieux installé assis en 1ère que debout en 2nde", un illustre inconnu


    Avant de poser une question vérifiez si elle n'a pas déjà une réponse dans les cours et tutoriels
    Si votre problème est pensez à marquer la conversation comme telle
    Si un message est utile, pertinent, et/ou vous êtes d'accord avec, pensez à à l'inverse s'il est inutile, faux ou que vous n'êtes pas d'accord, pensez à

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/10/2007, 08h42
  2. [D7] Comment ajouter une image dans du RTF ?
    Par Lung dans le forum Delphi
    Réponses: 21
    Dernier message: 02/10/2006, 16h59
  3. Comment ajouter une image dans une balise div ??
    Par liv dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/05/2006, 11h48
  4. comment ajouter une image dans mon HTML??
    Par Mickey.jet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/03/2006, 15h12
  5. code HTML pour mettre une image en background dans un menu
    Par Link14 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/10/2005, 12h11

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