0

완벽하게 작동하는지도 작업이 있지만 마커를 추가해야 할 때 오류가 발생하고 문제를 해결할 방법을 찾지 못했습니다.GoogleMap getFragmentManager를했을 때의 예외적 인 경우

public class MapActiv extends FragmentActivity {

//private GoogleMap map; 

@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map_fragment); 
    GoogleMap mGMap = ((MapFragment) 
      getFragmentManager().findFragmentById(R.id.map)).getMap(); 
    mGMap.addMarker(new MarkerOptions().position(new LatLng(46.24801, 26.76173)) 
    .title("Title").draggable(false)); 
} 

}

<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/map" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    class="com.google.android.gms.maps.SupportMapFragment" 
    map:cameraTargetLat="46.24801" 
    map:cameraTargetLng="26.76173" 
    map:cameraTilt="30" 
    map:cameraZoom="18" 
    map:uiCompass="false" 
    map:uiRotateGestures="true" 
    map:uiScrollGestures="true" 
    map:uiTiltGestures="true" 
    map:uiZoomControls="false" 
    map:uiZoomGestures="true"/> 

01-19 19:48:15.805: E/AndroidRuntime(16616): FATAL EXCEPTION: main 01-19 19:48:15.805:E/AndroidRuntime(16616): java.lang.NoSuchMethodError:com.ex.myschoolapp.MapActiv.getFragmentManager 01-19 19:48:15.805: E/AndroidRuntime(16616): at com.ex.myschoolapp.MapActiv.onCreate(MapActiv.java:23) 01-19 19:48:15.805: E/AndroidRuntime(16616): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-19 19:48:15.805: E/AndroidRuntime(16616): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623) 01-19 19:48:15.805: E/AndroidRuntime(16616): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675) 01-19 19:48:15.805: E/AndroidRuntime(16616): at android.app.ActivityThread.access$1500(ActivityThread.java:121) 01-19 19:48:15.805: E/AndroidRuntime(16616): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 01-19 19:48:15.805: E/AndroidRuntime(16616): at android.os.Handler.dispatchMessage(Handler.java:99) 01-19 19:48:15.805: E/AndroidRuntime(16616): at android.os.Looper.loop(Looper.java:123) 01-19 19:48:15.805: E/AndroidRuntime(16616): at android.app.ActivityThread.main(ActivityThread.java:3701) 01-19 19:48:15.805: E/AndroidRuntime(16616): at java.lang.reflect.Method.invokeNative(Native Method) 01-19 19:48:15.805: E/AndroidRuntime(16616): at java.lang.reflect.Method.invoke(Method.java:507) 01-19 19:48:15.805: E/AndroidRuntime(16616): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862) 01-19 19:48:15.805: E/AndroidRuntime(16616): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620) 01-19 19:48:15.805: E/AndroidRuntime(16616): at dalvik.system.NativeStart.main(Native Method)

답변

0

보십시오이 (당신이 버전 < 3.0을 사용하는 경우가 안드로이드 지원 라이브러리를 사용한다는 것을 기억하라)

import android.os.Bundle; 
import android.support.v4.app.FragmentManager; 
import android.view.LayoutInflater; 
import android.view.View; 

    import com.google.android.gms.maps.GoogleMap; 
    import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter; 
    import com.google.android.gms.maps.GoogleMap.OnMapClickListener; 
    import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener; 
    import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener; 
    import com.google.android.gms.maps.SupportMapFragment; 
    import com.google.android.gms.maps.model.LatLng; 
    import com.google.android.gms.maps.model.Marker; 
    import com.google.android.gms.maps.model.MarkerOptions; 
    public class MainActivity extends android.support.v4.app.FragmentActivity implements OnMapClickListener, OnMapLongClickListener{ 
     private GoogleMap myMap; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      FragmentManager myFragmentManager = getSupportFragmentManager(); 
      SupportMapFragment myMapFragment 
       = (SupportMapFragment)myFragmentManager.findFragmentById(R.id.map); 
       myMap = myMapFragment.getMap(); 
       myMap.setOnMapLongClickListener(this); 
       myMap.setOnMapClickListener(this); 
       myMap.setInfoWindowAdapter(new MiInfoWindowAdapter()); 
       myMap.setOnMarkerClickListener(new OnMarkerClickListener() { 

       @Override 
       public boolean onMarkerClick(Marker marker) { 
        // TODO Auto-generated method stub 
        marker.hideInfoWindow(); 
        return false; 
       } 
      }); 

     } 

     @Override 
     public void onMapLongClick(LatLng point) { 

      myMap.addMarker(new MarkerOptions().position(point).title(point.toString())); 
     } 

     @Override 
     public void onMapClick(LatLng point) { 
      // TODO Auto-generated method stub 
      myMap.addMarker(new MarkerOptions().position(point).title(point.toString())); 

     } 

     public class MiInfoWindowAdapter implements InfoWindowAdapter{ 

      @Override 
      public View getInfoContents(Marker marker) { 
       LayoutInflater inflater = getLayoutInflater().from(getApplicationContext()); 
       View view = inflater.inflate(R.layout.info, null); 
       marker.setDraggable(true); 
       return view; 
      } 

      @Override 
      public View getInfoWindow(Marker marker) { 
       LayoutInflater inflater = getLayoutInflater().from(getApplicationContext()); 
       View view = inflater.inflate(R.layout.info, null); 
       marker.setDraggable(true); 
       return view; 
      } 

     } 
    } 
0

아니요 응용 프로그램을 실행할 때 NoSuchMethodError 오류가 발생할 수 있습니다. 은 외부 라이브러리를 사용합니다. 특정 버전의 외부 라이브러리를 사용하여 응용 프로그램이 컴파일되고 실행된다고 가정합니다. 어떤 시점에서 외부 라이브러리가 변경되고 일부 메소드가 제거되거나 업데이트됩니다. 응용 프로그램의 클래스 경로가 업데이트되지 않고 코드가 최신 라이브러리의 외부 라이브러리를 사용하여 컴파일되지 않으면 런타임 중에 더 이상 존재하지 않는 메서드를 호출하고 NoSuchMethodError 오류가 발생합니다.

그래서 구글지도 API

에게에서 업데이트 한 : com.google.android.gms : 플레이 서비스-지도 : 7.5.0

사람 : com.google.android.gms : 플레이 어를 서비스 -지도 : 7.8.0

관련 문제