2013-08-12 5 views
2

Google Maps Android API V2의 실용 예제를 작성하려고합니다. 이 작업을 수행하는 방법을 설명하는 4 개의 자습서 (DJ-android, Vogella, 공식 문서에서 2 개의 자습서)를 발견했으며 그 중 아무 것도 작동하지 않습니다. 나는 "Binary XML file line #x Error inflating class"라는 똑같은 문제를 가진 다른 많은 개발자들로부터 거의 12 개의 게시물을 발견했다. stackoverflow에서 12 개의 게시물 중 하나도 대답이 하나도 없습니다. 인터넷 어디서나이 API의 작동 예제가 없습니다.Google지도 Android API V2 문제

내 프로젝트의 내용이 아래에 붙여 넣어집니다. 나는 그 모든 다양한 게시물에서 추천 된 모든 것을 가지고 있다고 생각하지만, 너무 많은 다른 사람들처럼이 인플레이션 런타임 오류가 발생하고 있습니다.

이 실제 프로젝트는 컴파일하지 않는 Vogella 튜토리얼에서 가져온 것입니다. 나는 같은 문제의 다른 게시물에서 픽스를 적용했다.

누구나이 작업 방법을 알려 줄 수 있습니까? 누구든지 어디서나 작동하는 예제를 알고 있습니까? 감사, 게리

매니페스트 파일 ...

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

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

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

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

    <uses-permission android:name="com.vogella.android.locationapi.maps.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-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.mapdemo.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> 

    </application> 
     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="I have a valid V2 key here" /> 
</manifest> 

나는 구글이 작업 공간에 도서관 프로젝트 Play 서비스가 있습니다. . . I copied the library project into my workspace

내 기본 레이아웃 XML 파일. . .

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity" > 

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

</RelativeLayout> 

MainActivity.java 파일. . .

package com.example.mapdemo; 

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

import android.support.v4.app.FragmentActivity; 
import com.google.android.gms.maps.SupportMapFragment; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 

public class MainActivity extends android.support.v4.app.FragmentActivity { 
    static final LatLng HAMBURG = new LatLng(53.558, 9.927); 
    static final LatLng KIEL = new LatLng(53.551, 9.993); 
    private GoogleMap map; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
     .getMap(); 
    Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG) 
     .title("Hamburg")); 
    Marker kiel = map.addMarker(new MarkerOptions() 
     .position(KIEL) 
     .title("Kiel") 
     .snippet("Kiel is cool") 
     .icon(BitmapDescriptorFactory 
      .fromResource(R.drawable.ic_launcher))); 

    // Move the camera instantly to hamburg with a zoom of 15. 
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15)); 

    // Zoom in, animating the camera. 
    map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

    return true; 
    } 

} 

로그 캣 (이 물건을 붙여 몇 가지 비밀이있다?) (코드 붙여 넣기가이 포럼에 근무하고자하는)

08-12 13:00:52.380: W/dalvikvm(8118): VFY: unable to resolve instance field 28 
08-12 13:00:52.550: W/dalvikvm(8118): Unable to resolve superclass of Lmaps/p/w; (734) 
08-12 13:00:52.550: W/dalvikvm(8118): Link of class 'Lmaps/p/w;' failed 
08-12 13:00:52.550: W/dalvikvm(8118): Unable to resolve superclass of Lmaps/ap/as; (6056) 
08-12 13:00:52.550: W/dalvikvm(8118): Link of class 'Lmaps/ap/as;' failed 
08-12 13:00:52.550: W/dalvikvm(8118): Unable to resolve superclass of Lmaps/af/k; (5085) 
08-12 13:00:52.550: W/dalvikvm(8118): Link of class 'Lmaps/af/k;' failed 
08-12 13:00:52.550: E/dalvikvm(8118): Could not find class 'maps.af.k', referenced from method maps.ag.an.a 
08-12 13:00:52.550: W/dalvikvm(8118): VFY: unable to resolve new-instance 4928 (Lmaps/af/k;) in Lmaps/ag/an; 
08-12 13:00:52.681: W/dalvikvm(8118): threadid=1: thread exiting with uncaught exception (group=0x40017560) 
08-12 13:00:52.691: E/AndroidRuntime(8118): FATAL EXCEPTION: main 
08-12 13:00:52.691: E/AndroidRuntime(8118): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mapdemo/com.example.mapdemo.MainActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class fragment 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.os.Looper.loop(Looper.java:130) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at java.lang.reflect.Method.invoke(Method.java:507) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:875) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:633) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at dalvik.system.NativeStart.main(Native Method) 
08-12 13:00:52.691: E/AndroidRuntime(8118): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:587) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:212) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.app.Activity.setContentView(Activity.java:1657) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at com.example.mapdemo.MainActivity.onCreate(MainActivity.java:26) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  ... 11 more 
08-12 13:00:52.691: E/AndroidRuntime(8118): Caused by: java.lang.RuntimeException: API key not found. Check that <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at maps.ag.bb.a(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at maps.ag.bb.a(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at maps.ag.an.a(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at maps.ag.bi.a(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at maps.ag.bh.a(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at blf.onTransact(SourceFile:107) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.os.Binder.transact(Binder.java:279) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onCreateView(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at com.google.android.gms.maps.SupportMapFragment$a.onCreateView(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at com.google.android.gms.internal.bh$4.b(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at com.google.android.gms.internal.bh.a(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at com.google.android.gms.internal.bh.onCreateView(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at com.google.android.gms.maps.SupportMapFragment.onCreateView(Unknown Source) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:884) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1066) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1168) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:280) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
08-12 13:00:52.691: E/AndroidRuntime(8118):  ... 20 more 
+0

"(?이 물건을 붙여 몇 가지 비밀이있다)"이러한 메타 데이터 태그 추가 편집자. – CommonsWare

답변

2

내가이없이 작업의 예를 알고 API를 인터넷의 어느 곳에서나 사용할 수 있습니다.

Here are 13 sample projects지도 V2의 다양한 측면을 보여줍니다.

그리고 나는 함께 시작한 샘플 중 일부는 모두 작동한다고 합리적으로 확신합니다.

누구나이 작업 방법을 말해 줄 수 있습니까? 당신은 당신의 <meta-data> 요소가 잘못된 위치에 있기 때문에 것을 얻고있다

08-12 13:00:52.691: E/AndroidRuntime(8118): Caused by: java.lang.RuntimeException: API key not found 

: 관련하여

.

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

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

    <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-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

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

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/Theme.Sherlock.Light.DarkActionBar"> 
     <activity 
      android:name="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="AIzaSyC4iyT46cB00IdKGcy5EmAxK5uCOQX2Oy8"/> 

     <activity android:name="LegalNoticesActivity"> 
     </activity> 
    </application> 

</manifest> 

Lars Vogel's Maps V2 tutorial, 예를 들어, 바로 이곳에있다 : 그것은 <application> 요소의 자식이 될 필요가있다.

+0

프로젝트가 지금 작동합니다 : $ –

1

나는 너와 같은 문제에 직면 해있다. 내 SDK를 4.4 kitkat으로 업데이트했을 때 이 발생했고 갑자기 모든 것이 엉망이되었다. 나는 Googlemapv2 apps에 매우 익숙하며 이전에 개발 한 것들 중 상당수를 가지고 있습니다.하지만 오늘은 내 모든 GoogleMap으로 애플 리케이션 내 컴파일 된 응용 프로그램을 실행 할 때마다 ... 나는이 업데이트 아무것도 vogella 및 기타 gmapv2 자습서 문제 없었다이 error..Before 4.4 업데이트 의심이 오류

Binary XML file line #x Error inflating class Fragment 

을 얻었다. 다음, 텍스트를 강조 위의`{}`도구 모음 버튼을 클릭 -

0

매니페스트 파일

<meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="your api key" /> 
    <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" />