导航到谷歌地图活动时Android Studio应用程序崩溃

导航到谷歌地图活动时Android Studio应用程序崩溃,android,google-maps,android-studio,Android,Google Maps,Android Studio,我在尝试导航到包含谷歌地图的活动时遇到错误。当导航到映射活动时,它说,[应用程序名称]不幸已停止,请通知 AndroidManifest.xml ` LogCat 1521-1521/samtechme.come.smartobd E/AndroidRuntime﹕ FATAL EXCEPTION: main android.view.InflateException: Binary XML file line #18: Error inflating

我在尝试导航到包含谷歌地图的活动时遇到错误。当导航到映射活动时,它说,[应用程序名称]不幸已停止,请通知

AndroidManifest.xml `

LogCat

             1521-1521/samtechme.come.smartobd E/AndroidRuntime﹕ FATAL EXCEPTION: main
        android.view.InflateException: Binary XML file line #18: Error inflating class fragment
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
        at android.app.Activity.setContentView(Activity.java:1895)
        at samtechme.come.smartobd.DriverScoreActivity.onOptionsItemSelected(DriverScoreActivity.java:213)
        at android.app.Activity.onMenuItemSelected(Activity.java:2566)
        at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:986)
        at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
        at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
        at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
        at com.android.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:156)
        at android.widget.AdapterView.performItemClick(AdapterView.java:298)
        at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
        at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788)
        at android.widget.AbsListView$1.run(AbsListView.java:3463)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.lang.ClassCastException: com.google.android.gms.maps.SupportMapFragment cannot be cast to android.app.Fragment
        at android.app.Fragment.instantiate(Fragment.java:585)
        at android.app.Fragment.instantiate(Fragment.java:560)
        at android.app.Activity.onCreateView(Activity.java:4738)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)

原因是,提交片段时,
Map
尚未准备就绪,使用
getMap()
函数时,
null

此问题中描述了克服此问题的方法:


您在xml中声明了
com.google.android.gms.maps.SupportMapFragment
,但您正在使用
MapFragment
强制转换
DisplayMap()
。改变

mMap = ((MapFragment) getFragmentManager().findFragmentById(
            R.id.map)).getMap();


我已经添加了logcat,请检查您必须实现回调并实现方法
onMapReady()
。在这种方法中,您应该能够像在代码中那样使用
getMap()
函数获取映射,并且它不会崩溃。
 private void DisplayMap() {
    if (mMap == null) {
        mMap = ((MapFragment) getFragmentManager().findFragmentById(
                R.id.map)).getMap();
    }
    if (mMap != null) {
        // The Map is verified. It is now safe to manipulate the map.
        GoogleMapOptions options = new GoogleMapOptions();
        options.mapType(GoogleMap.MAP_TYPE_NORMAL);

        CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(
                25.023395, 55.090513));
        CameraUpdate zoom = CameraUpdateFactory.zoomTo(8);

        mMap.moveCamera(center);
        mMap.animateCamera(zoom);
    }
}
             1521-1521/samtechme.come.smartobd E/AndroidRuntime﹕ FATAL EXCEPTION: main
        android.view.InflateException: Binary XML file line #18: Error inflating class fragment
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
        at android.app.Activity.setContentView(Activity.java:1895)
        at samtechme.come.smartobd.DriverScoreActivity.onOptionsItemSelected(DriverScoreActivity.java:213)
        at android.app.Activity.onMenuItemSelected(Activity.java:2566)
        at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:986)
        at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
        at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
        at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
        at com.android.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:156)
        at android.widget.AdapterView.performItemClick(AdapterView.java:298)
        at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
        at android.widget.AbsListView$PerformClick.run(AbsListView.java:2788)
        at android.widget.AbsListView$1.run(AbsListView.java:3463)
        at android.os.Handler.handleCallback(Handler.java:730)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
        Caused by: java.lang.ClassCastException: com.google.android.gms.maps.SupportMapFragment cannot be cast to android.app.Fragment
        at android.app.Fragment.instantiate(Fragment.java:585)
        at android.app.Fragment.instantiate(Fragment.java:560)
        at android.app.Activity.onCreateView(Activity.java:4738)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
mMap = ((MapFragment) getFragmentManager().findFragmentById(
            R.id.map)).getMap();
mMap = ((SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map)).getMap();