Java 谷歌地图布局从按钮按下崩溃调用

Java 谷歌地图布局从按钮按下崩溃调用,java,android,google-maps,google-maps-api-2,Java,Android,Google Maps,Google Maps Api 2,我正试图在Android应用程序中实现GoogleMapsAPI。当GoogleMap单独在一个应用程序中时,这很好,但是当我试图通过点击另一个布局的按钮打开包含地图的布局时,它在以下行崩溃:setContentView(R.layout.activity_maps);在mapsactivity.java中 以下是用于调用地图布局的函数: public void runSSH(View v) { Intent intent = new Intent(this, MapsActivity

我正试图在Android应用程序中实现
GoogleMapsAPI
。当GoogleMap单独在一个应用程序中时,这很好,但是当我试图通过点击另一个布局的按钮打开包含地图的布局时,它在以下行崩溃:setContentView(R.layout.activity_maps);在mapsactivity.java中

以下是用于调用地图布局的函数:

public void runSSH(View v) {

    Intent intent = new Intent(this, MapsActivity.class);
    startActivity(intent);
}
mapsactivity.java是由AndroidStudio自动生成的,但我仍将其放在这里:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}


@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Add a marker in Sydney and move the camera
    LatLng sydney = new LatLng(-34, 151);
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
}
下面是Activitymaps.xml(也是自动生成的):


我确实在清单和google_maps_API.xml中添加了API密钥

<meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="MYKEY-AIzaSyCf0-a3jUzVrL4PJwCo1q6W60YTxu-U7F0" />
<meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />




<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">
    AIzaSyCf0-a3jUzVrL4PJwCo1q6W60YTxu-U7F0
</string>

AIzaSyCf0-a3jUzVrL4PJwCo1q6W60YTxu-U7F0
以下是跟踪日志:

    03-10 14:47:20.937 22341-22341/com.hosenbocus.azhar.droner E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hosenbocus.azhar.droner/com.hosenbocus.azhar.droner.MapsActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class fragment
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
    at android.app.ActivityThread.access$600(ActivityThread.java:150)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:213)
    at android.app.ActivityThread.main(ActivityThread.java:5225)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class fragment
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:274)
    at android.app.Activity.setContentView(Activity.java:1895)
    at com.hosenbocus.azhar.droner.MapsActivity.onCreate(MapsActivity.java:20)
    at android.app.Activity.performCreate(Activity.java:5133)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316) 
    at android.app.ActivityThread.access$600(ActivityThread.java:150) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:213) 
    at android.app.ActivityThread.main(ActivityThread.java:5225) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.RuntimeException: The API key can only be specified once. It is recommended that you use the meta-data tag with the name: com.google.android.geo.API_KEY in the <application> element of AndroidManifest.xml
    at maps.db.r.a(Unknown Source)
    at maps.cz.c.a(Unknown Source)
    at com.google.android.gms.maps.internal.CreatorImpl.b(Unknown Source)
    at com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(Unknown Source)
    at com.google.android.gms.maps.internal.d$a.onTransact(:com.google.android.gms.alldynamite:62)
    at android.os.Binder.transact(Binder.java:347)
    at com.google.android.gms.maps.internal.ah.b(:com.google.android.gms:179)
    at com.google.android.gms.maps.internal.CreatorImpl.b(:com.google.android.gms:100)
    at com.google.android.gms.maps.internal.ag.onTransact(:com.google.android.gms:62)
    at android.os.Binder.transact(Binder.java:347)
    at com.google.android.gms.maps.internal.zzc$zza$zza.zzs(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment$zzb.zzzW(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment$zzb.zza(Unknown Source)
    at com.google.android.gms.dynamic.zza.zza(Unknown Source)
    at com.google.android.gms.dynamic.zza.onInflate(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
    at android.support.v4.app.Fragment.onInflate(Fragment.java:1142)
    at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2287)
    at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
    at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
    at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:80)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:469) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:274) 
    at android.app.Activity.setContentView(Activity.java:1895) 
    at com.hosenbocus.azhar.droner.MapsActivity.onCreate(MapsActivity.java:20) 
    at android.app.Activity.performCreate(Activity.java:5133) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316) 
    at android.app.ActivityThread.access$600(ActivityThread.java:150) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:213) 
    at android.app.ActivityThread.main(ActivityThread.java:5225) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
    at dalvik.system.NativeStart.main(Native Method) 
03-10 14:47:20.937 22341-22341/com.hosenbocus.azhar.droner E/AndroidRuntime:致命异常:main
java.lang.RuntimeException:无法启动活动组件信息{com.hosenbocus.azhar.droner/com.hosenbocus.azhar.droner.MapsActivity}:android.view.InflateException:二进制XML文件行#1:膨胀类片段时出错
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
在android.app.ActivityThread.access$600(ActivityThread.java:150)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:213)
位于android.app.ActivityThread.main(ActivityThread.java:5225)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:741)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
在dalvik.system.NativeStart.main(本机方法)
原因:android.view.InflateException:二进制XML文件行#1:膨胀类片段时出错
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
在android.view.LayoutInflater.inflate(LayoutInflater.java:469)
在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
在android.view.LayoutInflater.充气(LayoutInflater.java:353)
位于com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:274)
位于android.app.Activity.setContentView(Activity.java:1895)
在com.hosenbocus.azhar.droner.MapsActivity.onCreate(MapsActivity.java:20)上
位于android.app.Activity.performCreate(Activity.java:5133)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
在android.app.ActivityThread.access$600(ActivityThread.java:150)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:213)
位于android.app.ActivityThread.main(ActivityThread.java:5225)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:741)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
在dalvik.system.NativeStart.main(本机方法)
原因:java.lang.RuntimeException:API密钥只能指定一次。建议您在AndroidManifest.xml元素中使用名为com.google.android.geo.API_的元数据标记
at maps.db.r.a(未知来源)
位于maps.cz.c.a(未知来源)
位于com.google.android.gms.maps.internal.CreatorImpl.b(未知来源)
位于com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(未知来源)
位于com.google.android.gms.maps.internal.d$a.onTransact(:com.google.android.gms.alldynamite:62)
位于android.os.Binder.transact(Binder.java:347)
在com.google.android.gms.maps.internal.ah.b(:com.google.android.gms:179)
位于com.google.android.gms.maps.internal.CreatorImpl.b(:com.google.android.gms:100)
位于com.google.android.gms.maps.internal.ag.onTransact(:com.google.android.gms:62)
位于android.os.Binder.transact(Binder.java:347)
在com.google.android.gms.maps.internal.zzc$zza$zza.zzs(未知来源)
位于com.google.android.gms.maps.SupportMapFragment$zzb.zzzW(未知来源)
位于com.google.android.gms.maps.SupportMapFragment$zzb.zza(未知来源)
位于com.google.android.gms.dynamic.zza.zza(未知来源)
位于com.google.android.gms.dynamic.zza.onInflate(未知来源)
位于com.google.android.gms.maps.SupportMapFragment.onInflate(未知来源)
位于android.support.v4.app.Fragment.onInflate(Fragment.java:1142)
位于android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2287)
位于android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
在android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)上
位于android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
位于android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:80)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
在android.view.LayoutInflater.inflate(LayoutInflater.java:469)
在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
在android.view.LayoutInflater.充气(LayoutInflater.java:353)
位于com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:274)
位于android.app.Activity.setContentView(Activity.java:1895)
在com.hosenbocus.azhar.droner.MapsActivity.onCreate(MapsActivity.java:20)上
位于android.app.Activity.performCreate(Activity.java:5133)
    03-10 14:47:20.937 22341-22341/com.hosenbocus.azhar.droner E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hosenbocus.azhar.droner/com.hosenbocus.azhar.droner.MapsActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class fragment
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
    at android.app.ActivityThread.access$600(ActivityThread.java:150)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:213)
    at android.app.ActivityThread.main(ActivityThread.java:5225)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class fragment
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:274)
    at android.app.Activity.setContentView(Activity.java:1895)
    at com.hosenbocus.azhar.droner.MapsActivity.onCreate(MapsActivity.java:20)
    at android.app.Activity.performCreate(Activity.java:5133)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316) 
    at android.app.ActivityThread.access$600(ActivityThread.java:150) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:213) 
    at android.app.ActivityThread.main(ActivityThread.java:5225) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.RuntimeException: The API key can only be specified once. It is recommended that you use the meta-data tag with the name: com.google.android.geo.API_KEY in the <application> element of AndroidManifest.xml
    at maps.db.r.a(Unknown Source)
    at maps.cz.c.a(Unknown Source)
    at com.google.android.gms.maps.internal.CreatorImpl.b(Unknown Source)
    at com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(Unknown Source)
    at com.google.android.gms.maps.internal.d$a.onTransact(:com.google.android.gms.alldynamite:62)
    at android.os.Binder.transact(Binder.java:347)
    at com.google.android.gms.maps.internal.ah.b(:com.google.android.gms:179)
    at com.google.android.gms.maps.internal.CreatorImpl.b(:com.google.android.gms:100)
    at com.google.android.gms.maps.internal.ag.onTransact(:com.google.android.gms:62)
    at android.os.Binder.transact(Binder.java:347)
    at com.google.android.gms.maps.internal.zzc$zza$zza.zzs(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment$zzb.zzzW(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment$zzb.zza(Unknown Source)
    at com.google.android.gms.dynamic.zza.zza(Unknown Source)
    at com.google.android.gms.dynamic.zza.onInflate(Unknown Source)
    at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
    at android.support.v4.app.Fragment.onInflate(Fragment.java:1142)
    at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2287)
    at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
    at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
    at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
    at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:80)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:469) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:274) 
    at android.app.Activity.setContentView(Activity.java:1895) 
    at com.hosenbocus.azhar.droner.MapsActivity.onCreate(MapsActivity.java:20) 
    at android.app.Activity.performCreate(Activity.java:5133) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2230) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316) 
    at android.app.ActivityThread.access$600(ActivityThread.java:150) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:213) 
    at android.app.ActivityThread.main(ActivityThread.java:5225) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 
    at dalvik.system.NativeStart.main(Native Method) 
The API key can only be specified once. It is recommended that you use the meta-data tag with the name: com.google.android.geo.API_KEY in the <application> element of AndroidManifest.xml
<meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="MYKEY-AIzaSyCf0-a3jUzVrL4PJwCo1q6W60YTxu-U7F0" />
<meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />
<meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />