- Чтобы получить текущее местоположение на картах Google, я использую этот код.
- Это показывает мне ошибку в LayoutInflater (см. Logcate).
- Я использую фрагмент дляпоказать карты.
- Я использую FragmentActivity вместо AppCompat Activity
- , пожалуйста, дайте мне какое-то правильное решение
- См. logcate, чтобы проверить больше ошибок в моем коде.
xml
<RelativeLayout 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"
tools:context=".MainActivity">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/google_map"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
</RelativeLayout>
java
public class MainActivity extends FragmentActivity implements OnMapReadyCallback {
Location currentLocation;
FusedLocationProviderClient fusedLocationProviderClient;
private static final int RequestCode=101;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fusedLocationProviderClient= LocationServices.getFusedLocationProviderClient(this);
fethcLastLocation();
}
private void fethcLastLocation() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},RequestCode);
return;
}
Task<Location> task=fusedLocationProviderClient.getLastLocation();
task.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location!=null){
currentLocation=location;
Toast.makeText(getApplicationContext(),currentLocation.getLongitude()+""+currentLocation.getLongitude(),Toast.LENGTH_SHORT).show();
SupportMapFragment supportMapFragment= (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.google_map);
supportMapFragment.getMapAsync(MainActivity.this);
}
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
LatLng latLng=new LatLng(currentLocation.getLatitude(),currentLocation.getLongitude());
MarkerOptions markerOptions=new MarkerOptions().position(latLng).title("You are here");
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,5));
googleMap.addMarker(markerOptions);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case RequestCode:
if (grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
fethcLastLocation();
}
break;
}
}
logcat
2019-10-08 09:35:30.310 7261-7261/com.example.mymaps E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:498)
at com.android.internal.policy.HwPhoneWindow.setContentView(HwPhoneWindow.java:342)
at android.app.Activity.setContentView(Activity.java:2941)
at com.example.mymaps.MainActivity.onCreate(MainActivity.java:37)
at android.app.Activity.performCreate(Activity.java:7458)
at android.app.Activity.performCreate(Activity.java:7448)