【发布时间】:2021-01-10 16:47:31
【问题描述】:
希望你们都平安
在项目的这一部分中,我正在按照此代码创建一个显示特定位置的地图视图,但是我遇到了错误。
这就是我的xml文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
tools:context=".activities.PreRegister">
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="200dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.039" />
</androidx.constraintlayout.widget.ConstraintLayout>
Thie 是我用来显示位置的片段
package com.example.toimon.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.example.toimon.R;
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.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
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 FragmentBeforeBrowse extends Fragment implements OnMapReadyCallback{
private Button sensor_btn, man_btn;
GoogleMap googleMap;
MapFragment mapFragment;
public static FragmentBeforeBrowse fragmentBeforeBrowse() {
FragmentBeforeBrowse fragment = new FragmentBeforeBrowse();
return fragment;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_before_browse, null, false);
man_btn =view.findViewById(R.id.man_btn);
sensor_btn =view.findViewById(R.id.sensor_btn);
mapFragment = (MapFragment) getActivity().getFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
return view;
}
@Override
public void onMapReady(GoogleMap gMap) {
googleMap = gMap;
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
try {
googleMap.setMyLocationEnabled(true);
} catch (SecurityException se) {
}
//Edit the following as per you needs
googleMap.setTrafficEnabled(true);
googleMap.setIndoorEnabled(true);
googleMap.setBuildingsEnabled(true);
googleMap.getUiSettings().setZoomControlsEnabled(true);
//
LatLng placeLocation = new LatLng(3.5703335945608576, 103.42567603992448); //Make them global
Marker placeMarker = googleMap.addMarker(new MarkerOptions().position(placeLocation)
.title("UMP Faculty of Computer"));
googleMap.moveCamera(CameraUpdateFactory.newLatLng(placeLocation));
googleMap.animateCamera(CameraUpdateFactory.zoomTo(10), 1000, null);
}
}
最后这是错误
android.view.InflateException: Binary XML file line #19: Binary XML file line #19: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class fragment
Caused by: java.lang.RuntimeException: API key not found. Check that <meta-data android:name="com.google.android.geo.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml
at com.google.maps.api.android.lib6.drd.p.b(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):6)
at com.google.maps.api.android.lib6.auth.f.i(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):1)
at com.google.android.gms.maps.internal.CreatorImpl.c(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):24)
at com.google.android.gms.maps.internal.CreatorImpl.newMapFragmentDelegate(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):2)
at com.google.android.gms.maps.internal.g.aX(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):22)
at ds.onTransact(:com.google.android.gms.dynamite_mapsdynamite@204714067@20.47.14 (100408-0):4)
at android.os.Binder.transact(Binder.java:675)
at com.google.android.gms.internal.maps.zza.zza(Unknown Source:10)
at com.google.android.gms.maps.internal.zzf.zzc(Unknown Source:5)
at com.google.android.gms.maps.MapFragment$zzb.zzd(Unknown Source:12)
at com.google.android.gms.maps.MapFragment$zzb.createDelegate(Unknown Source:6)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaa(com.google.android.gms:play-services-base@@17.1.0:18)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.onInflate(com.google.android.gms:play-services-base@@17.1.0:20)
at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source:21)
at android.app.Fragment.onInflate(Fragment.java:1443)
at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3559)
at android.app.FragmentController.onCreateView(FragmentController.java:103)
at android.app.Activity.onCreateView(Activity.java:6445)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:337)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at com.example.toimon.fragments.FragmentBeforeBrowse.onCreateView(FragmentBeforeBrowse.java:38)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:292)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1227)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1382)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1460)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1525)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2316)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2103)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2058)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1960)
at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:418)
at android.os.Handler.handleCallback(Handler.java:873)
发生错误的行是这个
View view = inflater.inflate(R.layout.fragment_before_browse, null, false);
感谢评论,我对清单文件和 build.gradle 进行了更改,但是我仍然得到一个空白地图,其中没有任何显示
【问题讨论】:
标签: java android google-maps