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 :

MapFragment parfois noir


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 172
    Points : 70
    Points
    70
    Par défaut MapFragment parfois noir
    Bonjour à tous,

    J'utilise une SupportMapFragment (Gmaps API2) dans l'une de mes applications, tout fonctionne correctement sauf que parfois la carte reste noir, comme si elle ne s'était pas chargée.
    > Bizarrement, switcher sur un autre fragment (slidingMenu) puis y revenir la fait subitement apparaitre (redrawn?)

    Quelqu'un aurait une idée pour éviter ce désagrément? (je me vois assez mal dire à mon client que si la carte reste noir, il lui faut switcher d'écran pour y revenir ensuite et Ô magie! la carte est apparue )

    voila le code de la map: (je remplace dynamiquement une frameLayout par la map)
    Layout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    [...]
    <FrameLayout 
    	android:id="@+id/loc_containerMap"
    	android:layout_width="match_parent"
    	android:layout_height="match_parent"
    	android:layout_weight="1"
    	android:background="@android:color/transparent"
    	>
    </FrameLayout>
    [...]
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @Override
        protected void onViewInflating(View root) {
            if (supportMapFragment == null) {
                supportMapFragment = new SupportMapFragment();
            }
            listview = (ListView) root.findViewById(R.id.fragment_loc_listview);
            listview.setOnItemClickListener(this);
            getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.loc_containerMap, supportMapFragment).commit();
     
            loadData();
        }
    En vous remerciant par avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Une des solutions (hack) est d'ajouter une View transparent par dessus la Map.
    Inspirez vous de ce Gist par jgilfelt

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 172
    Points : 70
    Points
    70
    Par défaut
    J'avais lu plusieurs choses à propos de ce hack mis je pensais que ce n'etait que pour le scroll qui rendait la map noire?

    il est bien marqué "when transitionned", or dans mon cas, c'est à l'apparition de la map qu'elle reste noire :s

    J'ai tout de même rajouté un framelayout transparent recouvrant le viewpager comme indiqué dans le lien que tu m'as fourni.

    Comme le bug est aléatoire, je ne peux certifier que cela marche mais pour le moment je n'ai plus eu l'ecran noir

    Merci pour ta réponse en tous les cas.

    EDIT: je viens de tomber sur l'ecran noir :s
    EDIT 2 : tu as écris une "des" solutions, cela sous entend t'il qu'il y en ait d'autres??

  4. #4
    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
    Bonjour,

    Il faut bien penser à nettoyer la carte, car ci celle ci n'est pas nettoyé a son ré affichage cela va poser problème, je ne sais pas si ton souci viens de là mais cela peut être une piste.

    Donc bien penser a faire un remove sur ton fragment à la fin de l'utilisation de la map.
    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.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 172
    Points : 70
    Points
    70
    Par défaut
    En fait mon soucis se passe AVANT son utilisation, c'est à son tout premier affichage que parfois elle reste noir.

    Au contraire, si je manipule l'application, je change de fragment par exemple, pour ensuite revenir sur la carte, celle-ci s'est refresh et s'affiche correctement.

    c'est réellement le 1er affichage qui semble "incomplet" parfois (1 fois sur 4 environ)

  6. #6
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    J'ai eu un problème similaire avec le slide récemment.
    La vue transparente a réglée une partie du souci, mais il a en plus fallu que je crée une classe fille de la Google Maps ne redéfinissant que le onCreateView :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class CustomMapFragment extends SupportMapFragment {
     
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup view, Bundle savedInstance) {
            View layout = super.onCreateView(inflater, view, savedInstance);
     
            FrameLayout frameLayout = new FrameLayout(getActivity());
            frameLayout.setBackgroundColor(getResources().getColor(android.R.color.transparent));
            ((ViewGroup) layout).addView(frameLayout,
                new ViewGroup.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.FILL_PARENT));
            return layout;
        }
    }

    et faisant... ben, comme le hack précédent... une simili-vue transparente.

    De mon coté, ça a résolu a 90% le problème. Je n'ai plus d'écran noir sur le slide MAIS il reste une petite portion noire quand même, mais acceptable.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 172
    Points : 70
    Points
    70
    Par défaut
    je testerai au cas où

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

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    A tout hasard, tentes un invalidate() tout de suite après avoir substitué ton FrameLayout par ta Map.
    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

Discussions similaires

  1. [IDE][VSC++Express]Pourquoi parfois mon écran devient noir?
    Par olivierm79 dans le forum Visual Studio
    Réponses: 4
    Dernier message: 27/04/2006, 13h14
  2. Mon vertexbuffer apparaît completement noir
    Par Imhotep dans le forum DirectX
    Réponses: 3
    Dernier message: 14/07/2004, 16h11
  3. [GDI] dessin qui s'affiche en couleur puis en noir et blanc
    Par Harry_polin dans le forum Windows
    Réponses: 4
    Dernier message: 25/06/2004, 12h57
  4. Transparence autre qu'avec le noir...
    Par Ptibibi dans le forum DirectX
    Réponses: 11
    Dernier message: 07/06/2004, 18h13
  5. Sortie tv - Image en noir et blanc
    Par Demco dans le forum Périphériques
    Réponses: 7
    Dernier message: 22/11/2003, 18h01

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