android - 请帮助我尝试在空对象引用上调用虚拟方法“void com.google.android.gms.maps.GoogleMap.setOnMapLongClickListener”
问题描述
我想向您解释一下,这个应用程序运行正常,没有任何崩溃,但是当我第二次打开它开始崩溃时,我的意思是代码是相同的,我的代码没有任何变化,但突然它开始崩溃,所以这是我的代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_frag_location, container, false);
track=(Button) mView.findViewById(R.id.track);
track.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LatLng child=getvalue();
String currentString = child.toString();
String[] separated = currentString.split("lat/lng:");
String a=separated[0];
String b=separated[1];
try {
Intent intent = new Intent(Intent.ACTION_VIEW,
// Uri.parse("http://maps.google.com/maps?saddr="+lat_double+","+long_double+"&daddr="+lat_double+","+long_double));
Uri.parse("http://maps.google.com/maps?daddr="+b));
intent.setPackage("com.google.android.apps.maps");
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
});
//
PassChildId = getActivity().getIntent().getStringExtra("childId");
return mView;
}
这是 onviewcreate 代码:
@Override
public void onViewCreated(View view,Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mMapView = (MapView) mView.findViewById(R.id.map);
if (mMapView != null) {
mMapView.onCreate(null);
mMapView.onResume();
mMapView.getMapAsync(this);
}
}
这是 mapready 方法代码:
@Override
public void onMapReady(final GoogleMap googleMap) {
this.googleMap = googleMap;
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Location");
reference.orderByChild("ID").equalTo(PassChildId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild(PassChildId)) {
abc = dataSnapshot.getValue().toString();
Log.e("sdsd", " " + abc);
String[] abcd = abc.split("latlong=");
String[] abcd2 = abcd[1].split(Pattern.quote("}"));
abc = abcd2[0];
String latlong = abc;
String[] la = latlong.split(",");
childLocation = new LatLng(Double.valueOf(la[0]), Double.valueOf(la[1]));
googleMap.addMarker(new MarkerOptions().position(childLocation).title("Child Location"));
googleMap.moveCamera(CameraUpdateFactory.newLatLng(childLocation));
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(childLocation, 16.0f));
// TODO: 8/9/2018 Current Login User Location...
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
googleMap.setMyLocationEnabled(true);
LocationManager locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
// TODO: 8/9/2018 If GPS is Null
if (location == null){
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
String provider = locationManager.getBestProvider(criteria, true);
location = locationManager.getLastKnownLocation(provider);
}
// TODO: 8/9/2018 IF GPS is not Null...
if (location != null){
LatLng userLocation = new LatLng(location.getLatitude(), location.getLongitude());
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(userLocation,12.0f),1500,null);
}
}else {
//
}
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
}
public LatLng getvalue(){
return childLocation;
}
}