5

Tôi đang cố gắng hiển thị GoogleMap trên số Activity của mình. Tôi đã thực hiện tất cả các bước cần thiết bao gồm tạo khóa, liên kết google-play-services_lib, đã thêm android-support-v4.jar. Nhưng tôi đang gặp lỗi vì số Fragment. Tôi đã thử nhiều giải pháp, đã dành nhiều giờ nhưng không thể giải quyết vấn đề này. Làm ơn giúp tôi.Android Google Map - Lỗi khi làm tăng phân đoạn lớp học

MapActivity.java

package com.example.classified_android_app; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 

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

map.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <fragment 
     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="17.660324" 
     map:cameraTargetLng="75.906601" 
     map:cameraZoom="15" > 
    </fragment> 

</RelativeLayout> 

Manifest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.classified_android_app" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:maxSdkVersion="19" 
     android:minSdkVersion="16" 
     android:targetSdkVersion="19" /> 

    <permission 
     android:name="com.example.classified_android_app.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature" /> 

    <uses-permission android:name="com.example.classified_android_app.permission.MAPS_RECEIVE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

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

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <meta-data 
      android:name="com.google.android.geo.API_KEY" 
      android:value="my key" /> 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 

     <activity 
      android:name=".MapActivity" 
      android:label="Google Map" 
      android:theme="@style/MyTheme" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Đăng

06-21 09:54:08.592: W/dalvikvm(13704): threadid=1: thread exiting with uncaught exception (group=0x4191d908) 
06-21 09:54:08.630: E/AndroidRuntime(13704): FATAL EXCEPTION: main 
06-21 09:54:08.630: E/AndroidRuntime(13704): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.classified_android_app/com.example.classified_android_app.MapActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2211) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.app.ActivityThread.access$600(ActivityThread.java:149) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.os.Looper.loop(Looper.java:153) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.app.ActivityThread.main(ActivityThread.java:4987) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at java.lang.reflect.Method.invokeNative(Native Method) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at java.lang.reflect.Method.invoke(Method.java:511) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at dalvik.system.NativeStart.main(Native Method) 
06-21 09:54:08.630: E/AndroidRuntime(13704): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
06-21 09:54:08.630: E/AndroidRuntime(13704): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
+0

Bạn có sử dụng Eclipse? –

+0

'android: minSdkVersion =" 16 "' của bạn vì vậy bạn nên sử dụng 'MapFragment' –

Trả lời

3

Vấn đề chính là bạn android:minSdkVersion="16"

gì tài liệu ban đầu cho biết là

Nếu bạn android:minSdkVersion > 12 thì bạn nên sử dụng MapFragment với mở rộng Activity

Nếu android:minSdkVersion < 12 của bạn thì bạn nên sử dụng SupportMapFragment với mở rộng FragmentActivity

0

Cố gắng thay thế

<fragment 
     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="17.660324" 
     map:cameraTargetLng="75.906601" 
     map:cameraZoom="15" > 
    </fragment> 

với

<fragment 
     xmlns:map="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     map:cameraTargetLat="17.660324" 
     map:cameraTargetLng="75.906601" 
     map:cameraZoom="15" > 
    </fragment> 

Xem liên kết này được cung cấp bởi trang web chính thức android How to add static fragment from XML

+0

không hoạt động, cùng một lỗi: ( –

+0

lỗi là gì? –

+0

java.lang.RuntimeException: Không thể bắt đầu hoạt động ComponentInfo {com.example.classified_android_app /com.example.classified_android_app.MapActivity}: android.view.InflateException: Dòng tệp nhị phân XML # 6: Lỗi khi tăng phân đoạn lớp –

0

Hãy thử thêm này để onCreate() của bạn.

 SupportMapFragment mapFragment = 
       (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 

và thay thế điều này.

<fragment 
     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="17.660324" 
     map:cameraTargetLng="75.906601" 
     map:cameraZoom="15" > 
    </fragment> 

với

<fragment 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment" /> 
     map:cameraTargetLat="17.660324" 
     map:cameraTargetLng="75.906601" 
     map:cameraZoom="15" > 
    </fragment> 
+0

Khi tôi thêm xmlns: android = "http://schemas.android.com/apk/res/android "trong đoạn, sau đó nó hiển thị lỗi này - Tiền tố không gian tên không mong muốn" xmlns "được tìm thấy cho phân đoạn thẻ –

+0

Nên hoạt động theo cách bạn có miễn là bạn thêm SupportMapFragment vào onCreate() – 1ftw1

+0

I của bạn không nhận được –

Các vấn đề liên quan