2014-02-26 39 views
-1

我试图在android中创建地图。我有以下代码和日志猫错误消息。将Google地图添加到Android应用程序

我MapSearch.java文件:

public class MapSearch extends FragmentActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map_search); 
    } 
} 

我map_search.xml文件:

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

从logcat中的错误信息:

02-26 17:09:04.863: E/AndroidRuntime(17436): FATAL EXCEPTION: main 
02-26 17:09:04.863: E/AndroidRuntime(17436): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pir.mobileprivateoffersretrievalV2/com.pir.percyclient.MapSearch}: android.view.InflateException: Binary XML file line #3: Error inflating class fragment 
02-26 17:09:04.863: E/AndroidRuntime(17436): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at android.app.ActivityThread.access$600(ActivityThread.java:141) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at android.os.Handler.dispatchMessage(Handler.java:99) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at android.os.Looper.loop(Looper.java:137) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at android.app.ActivityThread.main(ActivityThread.java:5103) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at java.lang.reflect.Method.invokeNative(Native Method) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at java.lang.reflect.Method.invoke(Method.java:525) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at dalvik.system.NativeStart.main(Native Method) 
02-26 17:09:04.863: E/AndroidRuntime(17436): Caused by: android.view.InflateException: Binary XML file line #3: Error inflating class fragment 
02-26 17:09:04.863: E/AndroidRuntime(17436): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at android.view.LayoutInflater.inflate(LayoutInflater.java:469) 
02-26 17:09:04.863: E/AndroidRuntime(17436): at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
... 
+0

尝试此链接.. http://stackoverflow.com/questions/21475489/android-google -map .. –

回答

0

尝试改变

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

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

原因是要扩展一个FragmentActivity而非Fragment和必须使用SupportMapFragment

1

在android清单中没有定义Api Key。没有那个,你的地图不会加载。其次,你没有在你的android清单中定义所有的权限。 OpenGl,这也是必须的。请参阅此代码。这将帮助你.. :)

我的主要活动:

public class MainActivity extends FragmentActivity { 
private static final int GPS_ERRORDIALOG_REQUEST = 9001; 
Button btn1; 
EditText et1; 
EditText et2; 

GoogleMap map; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (servicesOK()) { 
     Toast.makeText(this, "Ready to map!!", Toast.LENGTH_LONG).show(); 
     setContentView(R.layout.testmap); 

    } else { 
     setContentView(R.layout.activitymain); 

    } 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

public boolean servicesOK() { 

    int isAvailable = GooglePlayServicesUtil 
      .isGooglePlayServicesAvailable(this); 

    if (isAvailable == ConnectionResult.SUCCESS) { 

     return true; 

    } else if (GooglePlayServicesUtil.isUserRecoverableError(isAvailable)) { 

     Dialog dialog = GooglePlayServicesUtil.getErrorDialog(isAvailable, 
       this, GPS_ERRORDIALOG_REQUEST); 
     dialog.show(); 

    } else { 

     Toast.makeText(this, "Cant connect!!", Toast.LENGTH_SHORT).show(); 

    } 
    return false; 
} 
} 

我的布局:

xmlns:maps="http://schemas.android.com/apk/res-auto" 
android:id="@+id/map" 
android:name="com.google.android.gms.maps.SupportMapFragment" 
android:layout_width="match_parent" 
android:layout_height="match_parent" /> 

最后的Android清单。这是最重要的想你将不得不考虑:

package="com.mike.maps" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="10" 
    android:targetSdkVersion="18" /> 

<permission 
    android:name="com.mike.maps.permission.MAPS_RECEIVE" 
    android:protectionLevel="signature" /> 

<uses-permission android:name="com.mike.maps.permission.MAPS_RECEIVE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 

<uses-feature 
    android:glEsVersion="0x00020000" 
    android:required="true" > 
</uses-feature> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.mike.maps.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.mike.maps.SecondActivity" > 
    </activity> 

    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="Your API KEY goes here" > 
    </meta-data> 
</application> 

希望这有助于你.. :)

+0

Iv'e投了你,因为我在同一个问题,你在之前.. :) ..让我知道这是否解释..如果是的话,接受我的答案..;) – mike20132013

+0

我定义的API键入我的清单文件,我也有清单文件中的OpenGl。我试图使用android:name =“com.google.android.gms.maps.SupportMapFragment” 而不是 android:name =“com.google.android.gms.maps.MapFragment”/> 但仍具有相同问题 –

相关问题