2014-06-15 4 views
-1

내 응용 프로그램에서 Google지도를 구현하고 싶습니다 ...지도 API 키가 있고 내 xml 파일에서 사용하지만 Google지도가 표시되지 않습니다. XML 파일에 단편을 추가하면 강제로 닫기 오류가 발생하고이 오류를 해결하면 런타임시 Google지도가 표시되지 않습니다. 도움을 주신 덕분에 안드로이드 응용 프로그램에서 Google지도를 표시하는 방법

MainActivity.java

package com.example.simplemap; 

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

public class MainActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    } 

    @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; 
    } 

} 

AndroidMainifest.xml

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

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
    <permission 
android:name="com.example.simplemap.permission.MAPS_RECEIVE" 
android:protectionLevel="signature"/> 
<uses-permission android:name="com.example.simplemap.permission.MAPS_RECEIVE"/> 

<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<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-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" > 
     <activity 
      android:name="com.example.simplemap.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="AIzaSyBVa_dSU5jYR0A0sUFBDgkYIdmD_PO8ADE"/> 
    </application> 

</manifest> 

activity_main.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/fragment1" 
     android:name="com.google.android.gms.maps.MapFragment" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

</RelativeLayout> 

로그 캣 : 06-16 15 : 40 : 09.827 : E/트레이스 (1343) : 오류 여는 추적 파일 : 해당 파일 또는 디렉터리가 없습니다 (2) 06-16 15 : 40 : 10.537 : D/AndroidRuntime (1343) : VM 종료 중 06-16 15 : 40 : 10.537 : dalvikvm (1343) : threadid = 1 : catch되지 않은 예외 (그룹 = 0x40a71930)로 스레드가 종료 됨 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : 치명적인 예외 : 주 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : java.lang.RuntimeException : 활동을 시작할 수 없음 ComponentInfo {com.example. simplemap/com.example.simplemap.MainActivity} : android.view.InflateException : 이진 XML 파일 줄 # 7 : 클래스 조각을 부 풀리는 중 오류가 발생했습니다. 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.app. ActivityThread.performLaunchActivity (ActivityThread.java:2180) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2230) 06-16 15:40 : 10.557 : E/AndroidRuntime (1343) : android.app.ActivityThrea에서 d.access $ 600 (ActivityThread.java:141) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1234) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.os.Handler.dispatchMessage (Handler.java:99) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.os.Looper .loop (Looper.java:137) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.app.ActivityThread.main (ActivityThread.java:5041) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : java.lang.reflect.Method.invokeNative (네이티브 메소드) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : java.lang.reflect.Method.invoke Method.java:511) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java : 793) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.android.internal.os.ZygoteInit.main (ZygoteInit.java:560) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : dalvik.system.NativeStart.main (네이티브 메서드) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : 원인 : android.view.InflateException : 이진 XML 파일 줄 # 7 : 클래스 조각을 부 풀릴 때 오류가 발생했습니다. 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:704) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.view.LayoutInflater.rInflate (LayoutInflater.java:746) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.view.LayoutInflater.inflate (LayoutInflater.java:489)) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.view.LayoutInflater.infl (LayoutInflater.java:356) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.android.internal.policy.impl.PhoneWindow.setContentView (PhoneWindow.java:270) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.app. Activity.setContentView (Activity.java:1881) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.example.simplemap.Activity.performCreate (Activity.java:5104) 06-16 15 : 40 : 40 : 10.557 : E/AndroidRuntime (1343) : android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1080) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.app.ActivityThread. performLaunchActivity (ActivityThread.java:2144) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : ... 11 더 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : 원인 : java.lang.IllegalStateException : 앱의 AndroidManifest.xml에있는 메타 데이터 태그에 올바른 값이 없습니다. 예상 된 4323000 개이지만 0 개를 찾았습니다. 요소 내에 다음 선언이 있어야합니다. 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.google.android.gms.common.GooglePlayServicesUtil.t (알 수없는 출처) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable (알 수없는 출처) 06-16 15 : 40 : 10.557 : E/AndroidRuntime 1343) : com.google.android.gms.maps.internal.qB (알 수없는 출처) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.google.android.gms.maps.internal .qA (알 수없는 출처) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.google.android.gms.maps.MapsInitializer.initialize (알 수없는 출처) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.google.android.gms.maps.MapFragment $ b.gW (알 수없는 출처) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.google.android.gms.maps.MapFragment $ ba (알 수없는 출처) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.google.android.gms.dynamic.aa (알 수없는 출처) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.google.android.gms.dynamic.a.onInflate (알 수없는 출처) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : com.google.android.gms.maps.MapFragment.onInflate (알 수없는 출처) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.app.Activity.onCreateView (Activity.java:4716) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : android.view.LayoutInflater.createViewFromTag (LayoutInflater.java : 680) 06-16 15 : 40 : 10.557 : E/AndroidRuntime (1343) : ... 21 자세히 06-16 15 : 40 : 31.647 : I/Process (1343) : 발신 신호. PID : 1343 SIG : 9

+0

후 당신의 로그 캣 오류가 문제를 발견하는 데 도움이 될 수 있습니다. – Wakim

+0

Google Play 서비스에 대한 메타 데이터 태그가 누락되었습니다 –

+0

minsdk 버전이 supportmapfragment를 사용해야합니다. 8 –

답변

0

는 다음 코드를 사용

조각 코드 :

public static class MapsFragment extends Fragment { 

     private SupportMapFragment suppfrag; 
     static final LatLng myLoc = new LatLng(//latitiude and longitude here); 
     private GoogleMap map; 

     public static final String ARG_SECTION_NUMBER = "section_number"; 

     public MapsFragment() { 

     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

       return inflater.inflate(R.layout.fragment_map, container, false); 
     } 
     @Override 
     public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 
      FragmentManager fm = getChildFragmentManager(); 
      suppfrag = (SupportMapFragment) fm.findFragmentById(R.id.map); 
      if (suppfrag == null) { 
       suppfrag = SupportMapFragment.newInstance(); 
       fm.beginTransaction().replace(R.id.map, suppfrag).commit(); 

       Marker location = map.addMarker(new MarkerOptions().position(CENTRU) 
         .title("Centru")); 
        location.setIcon(BitmapDescriptorFactory 
             .defaultMarker(BitmapDescriptorFactory.HUE_BLUE)); 

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

        // Zoom in, animating the camera. 
        map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null); 
        getActivity().getSupportFragmentManager().popBackStack(); 
      } 
     } 
     @Override 
     public void onResume() { 
      super.onResume(); 
      if (map == null) { 
       map = suppfrag.getMap(); 
       map.addMarker(new MarkerOptions().position(new LatLng(0, 0))); 
      } 
     } 
    } 

XML 코드 :

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

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

</RelativeLayout> 
+0

도움이 되었다면 upvoting을 고려하십시오. :) –

관련 문제