2013-08-13 4 views
0

com.google.android.gms.maps.MapView에 이상한 문제가 있습니다. 가비지 컬렉터가 작업을 수행 한 후 내 앱이 충돌하는지 확인하려면 HTC One (4.2.2)에서 백그라운드에서 실행중인 앱을 1 개만 허용하도록합니다. MapView를 표시하는 동안 내 앱 (홈 버튼)을 종료하고 다른 앱을 시작한 후 내 앱을 재개하면 MapView가 여전히 표시되지만지도를 이동하거나 확대/축소 할 수 없으며 전혀 응답하지 않습니다. 다른 활동은 잘 작동합니다. 나는 그 문제가 어디에 있을지 전혀 모른다.Android : MapView가 이력서 이후에 응답하지 않습니다.

누군가 나를 도울 수 있기를 바랍니다. 여기

는 {

com.google.android.gms.maps.MapView m; 
GoogleMap mMap; 
ArrayList<Advert> ads; 
HashMap<Marker, String> myMarker; 
public final LatLngBounds.Builder builder= new LatLngBounds.Builder(); 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    try { 
     MapsInitializer.initialize(getActivity()); 
    } catch (GooglePlayServicesNotAvailableException e) { 
     // TODO handle this situation 
    } 
    View inflatedView = inflater.inflate(R.layout.activity_advert_tab2, container, false); 
    m = (com.google.android.gms.maps.MapView)inflatedView.findViewById(R.id.map_tab); 
    m.onCreate(savedInstanceState); 

    myMarker = new HashMap<Marker, String>(); 
    ads= AdvertListActivity.getAdverts(); 
    setUpMapIfNeeded(inflatedView); 
    mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 

     @Override 
     public void onInfoWindowClick(Marker arg0) { 
      Intent myIntent = new Intent(getActivity(), AdvertLocationActivity.class); 

      Advert putadvert = DefaultApplication.dbc.getAdvertForAdvertID(Integer.parseInt(myMarker.get(arg0))); 

      myIntent.putExtra("advert", putadvert); 
      startActivity(myIntent); 

     } 
    }); 
    return inflatedView; 
} 


private void setUpMapIfNeeded(View inflatedView) { 
    if (mMap == null) { 
     mMap = ((com.google.android.gms.maps.MapView) inflatedView.findViewById(R.id.map_tab)).getMap(); 
     if (mMap != null) { 
      this.initMarker(); 
     } 
    } 
} 

public void initMarker(){ 
    for(int i=0;i<ads.size();i++){ 
     Advert tempAd = ads.get(i); 
     LatLng tlalo = new LatLng(tempAd.mainLocation.latitude,tempAd.mainLocation.longitude); 

     builder.include(tlalo); 

     String address = ""; 
     if(tempAd.mainLocation.contact_street != null){ 
      address = address + tempAd.mainLocation.contact_street; 
     } 
     if(tempAd.mainLocation.contact_street_number != null){ 
      address = address + " " + tempAd.mainLocation.contact_street_number; 
     } 
     Marker marker = mMap.addMarker(new MarkerOptions() 
     .position(tlalo) 
     .anchor(0.5f, 0.5f) 
     .title(tempAd.name) 
     .snippet(address) 
     .icon(BitmapDescriptorFactory.fromResource(R.drawable.androidpin))); 

     myMarker.put(marker,String.valueOf(tempAd.myid)); 
    } 



mMap.setOnCameraChangeListener(new OnCameraChangeListener() { 
    @Override 
    public void onCameraChange(CameraPosition arg0) { 
     mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 100)); 
     mMap.setOnCameraChangeListener(null); 
    } 

}); 
} 


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

@Override 
public void onPause() { 
    super.onPause(); 
    m.onPause(); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    m.onDestroy(); 
} 

@Override 
public void onLowMemory() { 
    super.onLowMemory(); 
    m.onLowMemory(); 
} 


} 
+0

여기서 디버깅 및/또는 로그 문을 인쇄 해 보았습니까? – MiStr

+0

슬프게도 충돌이나 오류가 없습니다. LogCat은 아무 것도 표시하지 않고 디버거가 다른 앱이 시작되는 순간 연결이 끊어지기 때문에 디버그 할 수 없습니다. –

+0

logcat에 로그 문을 추가해야합니다. Log.d ("", "");가 표시되지 않습니다. 어딘가에. – MiStr

답변

0

container.removeAllViews(); 

내가 다른 비슷한 질문에 그것을 발견 onCreateView()이 추가 시도 공용 클래스 FragmentAdvertlistMap이 조각을 확장지도보기를 보여줍니다 내 조각의 소스 코드입니다 당신의 대답은 원래의 링크를 잃어 버렸습니다.