【问题标题】:Android google map安卓谷歌地图
【发布时间】:2014-02-23 21:03:22
【问题描述】:

我正在尝试在我的应用程序中添加 Google MAP Api v2。但我遇到了异常。例外是

 java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.googlemapsv2/info.androidhive.googlemapsv2.MainActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class fragment

这是我的 xml 类

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

这是我的主要课程

public class MainActivity extends Activity {
    private GoogleMap _googleMap=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try
        {
            //loading map
            initilizeMap();
            _googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

            _googleMap.setMyLocationEnabled(true);       

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    private void initilizeMap() {
        if(_googleMap==null)
        {
            _googleMap=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
            if (_googleMap == null) {
                Toast.makeText(getApplicationContext(),
                        "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                        .show();
            }
        }

    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        initilizeMap();
    }

}

这是我的日志

01-31 14:20:55.603: E/AndroidRuntime(311): FATAL EXCEPTION: main
01-31 14:20:55.603: E/AndroidRuntime(311): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.demo/com.example.demo.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.os.Looper.loop(Looper.java:123)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.app.ActivityThread.main(ActivityThread.java:4627)
01-31 14:20:55.603: E/AndroidRuntime(311):  at java.lang.reflect.Method.invokeNative(Native Method)
01-31 14:20:55.603: E/AndroidRuntime(311):  at java.lang.reflect.Method.invoke(Method.java:521)
01-31 14:20:55.603: E/AndroidRuntime(311):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-31 14:20:55.603: E/AndroidRuntime(311):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-31 14:20:55.603: E/AndroidRuntime(311):  at dalvik.system.NativeStart.main(Native Method)
01-31 14:20:55.603: E/AndroidRuntime(311): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
01-31 14:20:55.603: E/AndroidRuntime(311):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.app.Activity.setContentView(Activity.java:1647)
01-31 14:20:55.603: E/AndroidRuntime(311):  at com.example.demo.MainActivity.onCreate(MainActivity.java:22)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-31 14:20:55.603: E/AndroidRuntime(311):  ... 11 more
01-31 14:20:55.603: E/AndroidRuntime(311): Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/com.example.demo-2.apk]
01-31 14:20:55.603: E/AndroidRuntime(311):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
01-31 14:20:55.603: E/AndroidRuntime(311):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
01-31 14:20:55.603: E/AndroidRuntime(311):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.view.LayoutInflater.createView(LayoutInflater.java:466)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:544)
01-31 14:20:55.603: E/AndroidRuntime(311):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
01-31 14:20:55.603: E/AndroidRuntime(311):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)

【问题讨论】:

  • 请发布您的完整代码和 logcat。谢谢。
  • 尝试扩展 FragmentActivity....
  • 我做了。但它给出了同样的例外
  • 如果可以的话,发布 logcat。
  • 也发布你的 manifest.xml

标签: android google-maps fragment


【解决方案1】:

您应该使用SupportMapFragment 而不是MapFragment

改变

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

也改变

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

_googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(
        R.id.map)).getMap(); 

此外,如果您在旧设备(Honeycomb 之前)上使用 Fragment,则应始终从 FragmentActivity 扩展您的 Activity

还要检查

将 Google Play 服务版本添加到您应用的清单中

编辑应用程序的 AndroidManifest.xml 文件,并添加 元素内的以下声明。这嵌入的版本 编译应用时使用的 Google Play 服务。

你只需要在&lt;application&gt;标签下添加&lt;meta-data&gt;到你的AndroidManifest.xml

....<application>
<meta-data android:name="com.google.android.gms.version"  
 android:value="@integer/google_play_services_version" />
</application>

这是因为latest google play services requires a version name, which is to be mentioned using &lt;meta-data .. /&gt; inside AndroidManifest.xml

【讨论】:

    【解决方案2】:

    从 FragmentActivity 扩展您的 MainActivity。

    参考这个:

    Inflating Google Maps v2 fragment causes ClassNotFoundException

    【讨论】:

      【解决方案3】:

      如果您使用 Fragments,您的 MainActivity 必须扩展 FragmentActivity

      public class MainActivity extends FragmentActivity {
          //Stuff
      }
      

      如果您正在使用 Support-Library,以便可以在较低的 Android API 级别中使用您的 Fragments,请使用:

      public class MainActivity extends android.support.v4.app.FragmentActivity{
          //Stuff
      }
      

      并在您的 XML 中使用 SupportFragmentMap:

      <fragment
          android:id="@+id/map"
          android:name="com.google.android.gms.maps.SupportMapFragment"
          android:layout_width="match_parent"
          android:layout_height="match_parent"/>
      

      【讨论】:

        【解决方案4】:

        在你的 xml 中尝试改变

        android:name="com.google.android.gms.maps.MapFragment"
        

        android:name="com.google.android.gms.maps.SupportMapFragment"
        

        检查这是否有效。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多