二进制XML文件行#8:错误的膨胀类片段/灰色背景
问题描述:
我有一个奇怪的问题,我试图显示的地图。有时会崩溃,并出现下一个错误:“二进制XML文件行#8:二进制XML文件行#8:错误扩展类片段”,有时会显示带有Google徽标的灰色背景(如Google地图的背景)。 我已经搜索并尝试了很多解决问题,没有成功。 下面是代码:二进制XML文件行#8:错误的膨胀类片段/灰色背景
public class MapFragment extends Fragment implements OnMapReadyCallback{
private GoogleMap mMap;
public MapFragment() {
// Required empty public constructor
}
public static MapFragment newInstance() {
MapFragment fragment = new MapFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_map, container, false);
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
return view;
}
@Override
public void onMapReady(GoogleMap googleMap) {
this.mMap = googleMap;
}
// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
}
public interface OnMapFragmentInteractionListener {
// TODO: Update argument type and name
void onMapFragmentInteraction(Uri uri);
}
public void updateMap(String latitude, String longitude){
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(Double.parseDouble(latitude),Double.parseDouble(longitude)),15));
}
}
和XML文件:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="com.andrei.myapp.MapFragment">
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
答
当您使用SupportMapFragment
从Fragment
最佳prectice OT使用com.google.android.gms.maps.MapView
代替SupportMapFragment
<com.google.android.gms.maps.MapView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map" />
你MapFragment
类如下:
public class MapFragment extends Fragment {
MapView mapView;
GoogleMap mMap;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_map, container, false);
mapView = (MapView) view.findViewById(R.id.map);
mapView.onCreate(savedInstanceState);
mMap = mapView.getMap();
mMap.getUiSettings().setMyLocationButtonEnabled(false);
mMap.setMyLocationEnabled(true);
try {
MapsInitializer.initialize(this.getActivity());
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(13.1, -37.9), 10);
mMap.animateCamera(cameraUpdate);
return view;
}
@Override
public void onResume() {
mapView.onResume();
super.onResume();
}
@Override
public void onPause() {
super.onPause();
mapView.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}
希望这将有助于〜
+0
getMap()已被弃用。 –
请出示堆栈跟踪 – X09
我解决这个问题,我没有能够在谷歌API控制台谷歌地图API。 –
试试我的回答。希望这将有助于 – FAT