2014-02-26 37 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」/> 但仍具有相同問題 –

相關問題