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 :

ImageView et problème affichage images


Sujet :

Composants graphiques Android

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Avril 2009
    Messages : 168
    Points : 122
    Points
    122
    Par défaut ImageView et problème affichage images
    Bonjour,

    Dans mon appli, j'ai une imageview dans laquelle j'affiche les images provenant d'un serveur distant.
    Lorsque, je lance mon appli en mode debug sur ma tablette (android 4.0), les images s'affichent bien.
    Mais lorsque, je le fais depuis mes téléphones (android 5, android 6), aucune image ne s'affiche et je n'ai même pas de message d'erreur dans les logs.
    Le code java est le suivant:
    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
    public class display_ofr extends AppCompatActivity implements IMessage {
     
        private TextView TextLibelle;
        private TextView TextDescription;
        private ImageView imgView;
     
        private JSONArray fURLImagesbyOfer = null;
     
        private static final String GET_IMAGES_BY_OFER = "http://xxxxx";
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_display_offer);
     
            TextLibelle = (TextView)findViewById(R.id.textView4);
            TextDescription = (TextView)findViewById(R.id.textView5);
            imgView = (ImageView)findViewById(R.id.imageView);
     
            Intent thisIntent = this.getIntent();
            Bundle b = thisIntent.getExtras();
            if(b!=null){
                String j =(String) b.get(Constants.TAG_LIBELLE);
                TextLibelle.setText(j);
     
                TextDescription.setText(j+"\n"+(String)b.get(Constants.TAG_DESCRPTION));
     
                String offerID = (String)b.get(Constants.TAG_IDOFR);
     
               /**here i used an asynchron task  to get the url in a database*/
                SignupActivity r = new SignupActivity(this,null,GET_IMAGES_BY_OFFER, null);
                r.fOff = this;
                r.execute("" + offerID);
                }
     
        }
     
        @Override
        public void getOffersResultPostExecute(JSONArray pURLImagesbyOffer) {
            fURLImagesbyOffer = pURLImagesbyOffer;
            try {
                String[] urls = new String[fURLImagesbyOffer.length()];
                // looping through All Offers
                for (int i = 0; i < fURLImagesbyOffer.length(); i++) {
                    JSONObject c = null;
     
                    c = fURLImagesbyOffer.getJSONObject(i);
                    urls[i] = c.getString(Constants.TAG_URL_IMAGE);
     
                    /**I use Glide to display the image in the ImageView**/
                    Glide.with(this).load(urls[0]).placeholder(R.drawable.splash_img).into(imgView);
     
                }
     
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
    celui de la page contenant l'imageview est la suivante:
    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
    <?xml version="1.0" encoding="utf-8"?>
    <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:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.xxxxxx.yyyy_ofer">
     
     
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Large Text"
            android:id="@+id/textView4"
            android:layout_marginTop="34dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginStart="20dp"
            android:layout_toStartOf="@+id/textView5"
            android:layout_toLeftOf="@+id/textView5" />
     
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Medium Text"
            android:id="@+id/textView5"
     
            android:layout_alignParentRight="true"
            android:layout_marginLeft="20dp"
            android:layout_alignParentEnd="false"
            android:layout_alignParentStart="false" />
     
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageView"
     
            android:layout_toEndOf="@+id/textView5"
            android:layout_below="@+id/textView4"
            android:adjustViewBounds="true" />
     
    </RelativeLayout>
    Merci d'avance pour votre aide

  2. #2
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 969
    Points : 3 375
    Points
    3 375
    Par défaut
    Pourquoi tu utilises Glide?

    Android sait le faire tout seul.

    Vérifie que Glide est installé.
    Si la réponse vous a aidé, pensez à cliquer sur +1

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Citation Envoyé par hotcryx Voir le message
    Pourquoi tu utilises Glide?
    Parce que Glide gère tout tout seul (thread , cache , resampling ...)

    Ta façon de faire est particulière.
    Pourquoi instancier une autre activité dans ton onCreate ?
    Est ce que getOffersResultPostExecute() est correctement appelé sur les téléphone et est ce que le contenu retourné est correct ?

    Tout simplement les appareil sont t'il bien connecté au réseau qui permet d'accéder aux images ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Avril 2009
    Messages : 168
    Points : 122
    Points
    122
    Par défaut
    Bonjour,

    Grunk, hotcryx, tout d'abord merci pour vos réponses.
    @hotcryx, Glide est bien installé car sur ma tablette, les images s'affichent bien.

    @Grunk, j'utilise une tâche asynchrone afin de récupérer l'url correspondant à l'image que je souhaite afficher (image se trouvant sur un serveur distant).
    Ensuite, depuis la méthode getOffersResultPostExecute(), je fais un appel à Glide pour afficher l'image en lui donnant en paramètres, l'url et l'imageview.
    C'est bizarre parce que avec ma tablette ou mes téléphones, je n'ai aucun message d'erreur ou même warning. les téléphones sont connectés à l'internet en wifi comme la tablette.

    Ce qui me sidère c'est que je n'ai rien au niveau des logs qui puissent me mettre sur une piste

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Tes conventions de codage sont pas top :

    Une activity (class qui dérive de Activity ou AppCompatActivity ) devrait se nommer : xxxxxActivity : Toi elle se nomme simplement "display_ofr".
    Au contraire ta classe qui fait ta tache asynchrone s'appel SignupActivity alors que à priori ce n'est pas une activity. Si s'en est une tu ne devrais pas faire comme ca.

    Pour revenir à ton problème;

    Comment est appelé getOffersResultPostExecute() ? Dans ton exemple tu fais bien ta requête asynchrone mais tu n'appel pas getOffersResultPostExecute()
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Avril 2009
    Messages : 168
    Points : 122
    Points
    122
    Par défaut
    @Grunk, merci, je tiendrai compte de tes remarques sur ces conventions.

    En fait ma classe display_ofr implémente l'interface IMessage. De ce fait, elle implémente la méthode getOffersResultPostExecute qui est appelée dans le onPostExecute de la tâche asynchrone.
    Code source de la tache asynnchrone:
    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
     
     
    public class SignupActivity extends AsyncTask<String, Void, String> {
     
        private Context context;
     
        private JSONParser jParser = new JSONParser();
     
        private static final String TAG_SUCCESS = "success";
        private static final String TAG_OFFERS = "offers";
        private static final String TAG_MESSAGE = "message";
     
        private String fLink;
     
        private JSONArray fOffers = null;
     
        ListView fListViewtoset ;
     
        public IMessage fOff=null; //ce champ est initialisé dans la méthode onCreate de l'activité (cf ligne 32, display_ofr.java)
     
     
     
        public SignupActivity(Context context, ListView pListView, String pLink, JSONArray pOffersResult) {
            this.context = context;
     
            this.fListViewtoset = pListView;
     
            this.fOffers = pOffersResult;
     
            this.fLink = pLink;
        }
     
        protected void onPreExecute() {
     
        }
     
        @Override
        protected String doInBackground(String... params) {
     
            String link = this.fLink;
            String data  = null;
     
            JSONObject json = jParser.makeHttpRequest(link, params);
     
            try {
                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
     
                    fOffers = json.getJSONArray(TAG_OFFERS);
     
     
                }else{
                    String[] lLocalVars = new String[1];
                    lLocalVars[0] = "No Offers found around!! ";
                    fOffersTab = lLocalVars;
     
                    fOffers = json.getJSONArray(TAG_MESSAGE);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return "";
        }
     
        protected void onPostExecute(String file_url) {
             fOff.getOffersResultPostExecute(fOffers);
        }
    }

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Ok,

    il faudrait donc savoir , sur les appareil où les image ne marche pas jusqu'où tu vas.
    Est ce que getOffersResultPostExecute() est appelé ? est ce que tu as des message dans le logcat ?

    Il faudrait parcourir la doc de glide pour voir si il est possible d'avoir des infos de debug (si tu arrives jusque là dans ton code)
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème affichage Images
    Par jason69 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 06/03/2007, 20h19
  2. [MySQL] problème affichage image avec sql
    Par igaurillac dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/02/2007, 18h04
  3. [VB]Problème affichage image dans IE6
    Par flogreg dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/02/2006, 18h41
  4. Problème affichage image dans IE6
    Par flogreg dans le forum IE
    Réponses: 6
    Dernier message: 13/02/2006, 14h29
  5. problème affichage image
    Par thealpacino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 30/05/2005, 13h56

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