Android Google Map SupportMapFragment

时间:2015-02-06 06:44:28

标签: android supportmapfragment

我正在开发Android应用程序,但我的应用程序有一些错误 当我打开应用程序时,我的应用程序已停止。 setContentView(R.layout.activity_patient_loc); - 此行发生错误。

Activity_patient_loc.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

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

我尝试删除片段,因此效果很好。为什么会出现错误此代码? 我已经添加了apikey和任何权限。

的Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.upsil.dementia"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="15" />
<permission
    android:name="com.upsil.dementia.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />
<!-- GCM 관련 퍼미션 -->
<permission 
    android:name="com.upsil.dementia.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<!-- GCM 받기 -->
<uses-permission android:name="com.upsil.dementia.permission.C2D_MESSAGE" />
<!-- GCM을 받으려면 구글 계정 필요 -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- 메시지 받을 때 wake up 하기 위해 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.upsil.dementia.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<!-- 진동 -->
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<application
    android:icon="@drawable/dangermap"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Light.NoTitleBar" >
    <activity
        android:name="com.upsil.dementia.LoginActivity"
        android:label="@android:style/Theme.Light.NoTitleBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.upsil.dementia.MainActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.UserMenuActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.HelpActivity"
        android:label="도움말" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

    <!-- GCM 리시버 -->
    <receiver
        android:name="com.google.android.gcm.GCMBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

            <category android:name="com.upsil.dementia" />
            <!-- 젤리빈 부터는 category 빼도 된다 -->
        </intent-filter>
    </receiver>
    <!-- GCM 리시버에서 돌리는 서비스 -->
    <service android:name="com.upsil.dementia.GCMIntentService" />



    <activity
        android:name="com.upsil.dementia.RescueTabActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.RescueSNSActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.MessageActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.LoadingActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.PatientInfoActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.GuardianInfoActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.SettingActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.SchInfoActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.SchEditActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.PatientEditActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.PatientAddActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.GuardianAddActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.GuardianEditActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="com.upsil.dementia.SchAddActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="com.upsil.dementia.SchAddEidtActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="com.upsil.dementia.LocGuardianActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="com.upsil.dementia.LocPatientActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="com.upsil.dementia.PostUserActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="com.upsil.dementia.PatternActivity"
        android:label="행동 이력 " />
    <activity
        android:name="com.upsil.dementia.PatternQueryActivity"
        android:label="@string/app_name" />
    <activity
        android:name="com.upsil.dementia.SchMapActivity"
        android:label="@string/app_name" />
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value=" my api key" />
    <activity
        android:name="com.upsil.dementia.CalendarActivity"
        android:label="@string/title_activity_calendar" >
    </activity>
</application>

logcat的

02-06 15:28:34.358: E/AndroidRuntime(21575): FATAL EXCEPTION: main
02-06 15:28:34.358: E/AndroidRuntime(21575): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.upsil.dementia/com.upsil.dementia.LocPatientActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class fragment
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.os.Looper.loop(Looper.java:137)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.app.ActivityThread.main(ActivityThread.java:4507)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at java.lang.reflect.Method.invokeNative(Native Method)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at java.lang.reflect.Method.invoke(Method.java:511)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at dalvik.system.NativeStart.main(Native Method)
02-06 15:28:34.358: E/AndroidRuntime(21575): Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class fragment
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:271)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.app.Activity.setContentView(Activity.java:1835)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at com.upsil.dementia.LocPatientActivity.onCreate(LocPatientActivity.java:191)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.app.Activity.performCreate(Activity.java:4465)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932)
02-06 15:28:34.358: E/AndroidRuntime(21575):    ... 11 more
02-06 15:28:34.358: E/AndroidRuntime(21575): Caused by: android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.SupportMapFragment: make sure class name exists, is public, and has an empty constructor that is public
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.support.v4.app.Fragment.instantiate(Fragment.java:395)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.support.v4.app.Fragment.instantiate(Fragment.java:363)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:264)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669)
02-06 15:28:34.358: E/AndroidRuntime(21575):    ... 21 more
02-06 15:28:34.358: E/AndroidRuntime(21575): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.SupportMapFragment
02-06 15:28:34.358: E/AndroidRuntime(21575):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-06 15:28:34.358: E/AndroidRuntime(21575):    at android.support.v4.app.Fragment.instantiate(Fragment.java:385)
02-06 15:28:34.358: E/AndroidRuntime(21575):    ... 24 more

2 个答案:

答案 0 :(得分:0)

在你的onCreate()旁边 在xml

中添加google地图时,您必须调用以下代码
 GoogleMap map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map))
        .getMap();

然后你可以看到地图。

答案 1 :(得分:0)

您是否添加了以下元数据?

     <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />  

     <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="your key " />