2013-12-19 57 views
0

我在使用api v2的Google地圖上工作,我添加了代碼來顯示地圖並且它正常工作,但我有兩個問題, 1.當地圖顯示,然後設備被鎖定時,然後在解鎖設備onResume()的片段被調用和地圖片段不響應(我不能滾動或縮放它)。 2.我在同一視圖上也有一個按鈕,onClick按鈕打開一個郵件intent.so應用程序暫停,之後當用戶移動到應用程序地圖片段是黑色的,並且地圖沒有加載。Google地圖在恢復應用後無響應

我試過android:hardwareAccelerated="false"作爲stackoverflow post建議,但它不適合我。

我裏面的OnCreate是 -

map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
MarkerOptions marker = new MarkerOptions(); 
marker.position(myPosition); 
marker.title(myTitle); 
Marker locationMarker = map.addMarker(marker); 
locationMarker.showInfoWindow(); 
map.moveCamera(CameraUpdateFactory.newLatLngZoom(myPosition, 15)); 
map.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null); 

我ahve也通過移除子視圖嘗試代碼 -

ViewGroup parent = (ViewGroup) v.getParent(); 
if (parent != null) 
    parent.removeView(v); 

以及在我的onResume的mapFragment使用下面的代碼() -

SupportMapFragment fragments = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)); 
if(fragment!=null){ 
    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); 
     ft.remove(fragments); 
     ft.commit(); 
} 

請幫我找我失蹤的地方。

+0

你初始化地圖的onResume? –

回答

0

做一個私有函數,

private void initilizeMap() { 
    if (map == null) { 
     map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
       R.id.map)).getMap(); 

     // check if map is created successfully or not 
     if (map == null) { 
      Toast.makeText(getApplicationContext(), 
        "Sorry! unable to create maps", Toast.LENGTH_SHORT) 
        .show(); 
     } 
    } 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    initilizeMap(); 
} 
+0

我嘗試過,但仍然不能正常工作 – Ravi

+0

當onResume調用map不爲null時,它顯示地圖,因爲我在代碼中添加了onSavedInstanceState()方法,但地圖沒有重新調用。 – Ravi

+0

在初始化之前檢查是否(map!= null){map.clear();}在onresume中。 –