Java 谷歌地图布局从按钮按下崩溃调用
我正试图在Android应用程序中实现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
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" />