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,你必須使用Android的支持庫)

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

相關問題