2016-03-28 7 views
-1

私のアプリケーションでGoogleマップを使用しています。私は、このエラーに "java.lang.IllegalStateExceptionを-1:セービング状態の失敗:アクティブ SupportMapFragment {212f6b1}は、インデックスをクリアしている"Googleマップサポートフラグメントを使用したエラー状態エラー

を取得しています

私の携帯が行くとき

をGoogleマップを含むフラグメントがアクティブな間、スリープ状態になります。 のGoogleマップを含む私のコードはここにある:

public class MapFragment extends Fragment implements OnMapReadyCallback{ 

public MapFragment() { 
} 

GoogleMap mgoogleMap; 

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    Log.d("cycle","Mapfragment-created"); 
    View RootView = inflater.inflate(R.layout.mapfragment, container, false); 
    SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
    return RootView; 
} 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    Log.d("map", "OnMapReady"); 
    if (mgoogleMap == null) 
     mgoogleMap = googleMap; 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    Log.d("cycle-mapfragment","onResume"); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    Log.d("cycle-mapfragment", "onPause"); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
} 

@Override 
public void onDestroyView() { 
    try { 
     SupportMapFragment fragment = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map)); 
     FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); 
     ft.remove(fragment); 
     ft.commit(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    finally { 
     super.onDestroyView(); 
    } 
} 
} 

どのようにこの問題を解決するために?

答えて

0

は、私はそれがこの行を削除し、固定

fm.executePendingTransactions();

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    mMapView = new SupportMapFragment(); 
    FragmentManager fm = getChildFragmentManager(); 
    fm.beginTransaction().replace(R.id.map, mMapView).commit(); 
    //fm.executePendingTransactions(); 
} 
関連する問題