2013-01-02 20 views
5

cố gắng hiển thị bản đồ Google bằng cách sử dụng một đoạn. Đã sử dụng page sau đây làm hướng dẫn.lỗi khi lạm phát XML trong Google maps fragment

Tôi nhận được ngoại lệ "Lỗi Đang thổi phồng phân đoạn lớp".

1) Nhập khẩu các dịch vụ jar google-play-services.jar

2) tải về và cấu hình google play SDK.

3) nhận Khóa API v2 mới nhất.

4) Đã thêm quyền com.google.android.providers.gsf.permission.READ_GSERVICES trong tệp kê khai.

5) sử dụng mindsdk = 8 và target = 16.

Đối với một tài liệu tham khảo, Androidmanifest.xml:

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

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

<permission 
android:name="com.example.com.mapsdemo.permission.MAPS_RECEIVE" 
android:protectionLevel="signature"/> 
<uses-permission android:name="com.example.com.mapsdemo.permission.MAPS_RECEIVE"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 

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

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.com.mapsdemo.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> 
<meta-data 
android:name="com.google.android.maps.v2.API_KEY" 
android:value="AIzaSyDXPsxWF634gd907NzZKkRkNS0oH9IPWgk"/> 


</application> 

MainActivity.java

package com.example.com.mapsdemo; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.Toast; 

import com.google.android.gms.common.GooglePlayServicesUtil; 


//API : AIzaSyDXPsxWF634gd907NzZKkRkNS0oH9IPWgk 

public class MainActivity extends Activity { 

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


    try { 
    setContentView(R.layout.activity_main); 
    } catch (Exception e) { 

    Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show(); 
    } 



} 

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

} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<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.MapFragment"/> 

Logcat:

01-02 18:31:21.477: I/jdwp(11473): Ignoring second debugger -- accepting and dropping 
01-02 18:31:24.493: D/libEGL(11871): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so 
01-02 18:31:24.493: D/libEGL(11871): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so 
01-02 18:31:24.509: D/libEGL(11871): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so 
01-02 18:31:24.602: D/OpenGLRenderer(11871): Enabling debug mode 0 
+0

Vui lòng đăng theo dõi ngăn xếp. – CommonsWare

+0

tôi là một người mới. xin vui lòng cho tôi biết nếu tôi đã làm bất kỳ sai lầm – 10101010

+0

Đó không phải là một dấu vết ngăn xếp Java liên quan đến câu hỏi của bạn. Chạy ứng dụng bên ngoài trình gỡ lỗi, cho phép sự cố xảy ra và xem LogCat cho theo dõi ngăn xếp. – CommonsWare

Trả lời

4

Error inflating class fragment thường đến khi bạn đang cố gắng sử dụng API Cấp mẹ đẻ 11 phiên bản của mảnh vỡ - mà mã nguồn của bạn đang làm - nhưng đang cố gắng chạy nó trên một phiên bản Android cũ hơn. Để sử dụng <fragment> trên API Cấp 10 và dưới đây, bạn phải sử dụng backport Hỗ trợ gói Android của mảnh:

  • thêm gói hỗ trợ Android để dự án của bạn
  • kế thừa từ FragmentActivity thay vì Activity
  • sử dụng SupportMapFragment hơn MapFragment
  • thay đổi bất cứ điều gì khác mà bây giờ khác dựa trên backport này

Hoặc, bạn có thể đặt số android:minSdkVersion thành 11 trở lên và chạy mã hiện tại của mình, chỉ trên các thiết bị mới hơn.

Bạn có thể đọc thêm về gói Hỗ trợ Android theo số the documentation.

+1

để sửa chữa thứ hai tôi sử dụng Nexus với Jelly đậu, nhưng không làm việc. và trong lần đầu tiên, ngay cả sau khi thực hiện thay đổi trong bốn điểm nó ném cùng một ngoại lệ. – 10101010

+0

kế thừa từ FragmentActivity thay vì Hoạt động –

1

Tôi đã gặp lỗi tương tự. Kiểm tra xem bạn có chạy nó trên thiết bị thực và thư viện dịch vụ google play atatch theo cách sau không. project_properties-> android-> Thư viện sau đó thêm google play lib có ..

một lần nữa làm cho libs thư mục Copy v4.jar hỗ trợ android và google_play_services.jar và sau đó nhấn chuột phải vào từng tập tin và chọn xây dựng để con đường ..

cũng kiểm tra khóa api của bạn là dành cho gói com.example.com.mapsdemo..cho mỗi gói khóa api mới sẽ được tạo.

và sử dụng SupportMapFragment thay vì MapFragment trong tệp XML của bạn.

điều này đã giải quyết được sự cố của tôi.

Hy vọng điều này sẽ khắc phục được sự cố của bạn.

0

Rất nhiều câu hỏi về vấn đề này và sau hai mươi ngày, giải pháp của tôi rất đơn giản: bạn phải biên dịch dự án của mình bằng cách sử dụng API Google Project Target Target. Tôi cảm thấy thật ngu ngốc về điều đó.

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