1

Mes problèmes sont que onCreateView n'est pas appelé dans ma MapFragment pour réinstituer/créer la vue Fragment (un conteneur MapView) qui est supprimé sous onPause et onStop, et est donc null. Par conséquent, le contenu du fragment s'affiche en noir car la vue de la carte est nulle.Obtenir un fragment pour surcharger onCreateView lorsque l'écran est allumé

Cela ne se produit que dans une seule condition, c'est-à-dire lorsque je rallume et rallume l'écran. OnCreateView agit normalement lorsque je glisse de nouveau sur le fragment mapview après qu'il a été mis en pause. L'écran doit souvent s'éteindre car je travaille sur un jeu basé sur la localisation.

Toute aide ici serait grandement appréciée! =)

J'ai un FragmentActivity qui a trois onglets, ViewPager, FragmentPagerAdapter, et tout ce qui:

mapFragment = Fragment.instantiate(this, MapFragment.class.getName()); 
fragments.add(mapFragment); 
fragments.add(Fragment.instantiate(this, NavHelperActivity.class.getName())); 
fragments.add(Fragment.instantiate(this, CompassTabActivity.class.getName())); 
mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments); 

pager = (ViewPager)super.findViewById(R.id.viewpager); 
pager.setAdapter(this.mPagerAdapter); 

MapFragment onCreateView (..) ne ceci:

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) { 
// This is where you specify you activity class 
Intent i = new Intent(getActivity(), MapTabActivity.class); 
Window w = mLocalActivityManager.startActivity("tag", i); 
mapViewContainer = w.getDecorView(); 
mapViewContainer.setVisibility(View.VISIBLE); 
mapViewContainer.setFocusableInTouchMode(true); 
((ViewGroup) 
mapViewContainer).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); 
return mapViewContainer; } 

Et le OnPause a pour supprimer la vue de la carte:

if (mapViewContainer != null) { 
mapViewContainer.setVisibility(View.GONE); 
((ViewGroup) mapViewContainer.getParent()).removeView(mapViewContainer); 
mapViewContainer = null; 
} 

Répondre

0

EDIT, MISE À JOUR, SOLUTION:

D'abord, ne pas explicitement mapViewContainer.

Set variable de classe:

private static ViewGroup parent; 

Remplacer onStart avec ce code:

@Override 
public void onStart() { 
    super.onStart(); 
    parent = mapViewContainer.getParent(); 
} 

En onResume, faites:

@Override 
public void onResume() { 
    super.onResume(); 

    if (mapViewContainer != null) { 
     ((ViewGroup) parent).removeView(mapViewContainer); 
     ((ViewGroup) parent).addView(mapViewContainer); 
    } 
} 

Reste du code doit rester le même.

Merci à casaflowa pour cela.

+0

Pouvez-vous s'il vous plaît m'aider à utiliser google map apiv2 sur un fragment d'activité fragmenté. Cela montre un écran blanc. – Akhil

Questions connexes