我正在尝试在Android Studio中启动基于Google地图的应用程序。我按照说明开始了Google Maps活动。
然后我按照说明创建了一个API密钥,并启用了maps SDK android for android
并将密钥复制到了应用程序中。
但是当我尝试运行该应用程序(不做任何更改)时,出现此错误:
Inconvertible types; cannot cast 'android.support.v4.app.Fragment' to 'com.google.android.gms.maps.SupportMapFragment'
对于这一行代码:
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
and this error: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:12:5-42:19 to override.
in the event.
代码如下:
package com.example.android.myfirstmap;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
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.MarkerOptions;
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, Australia, 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));
}
我环顾四周,看看是否有一种解决方案也可以解决我的问题,但是我尝试过的解决方案都不是正确的。
有人知道如何解决吗? evreything已更新。
答案 0 :(得分:0)
Support Map Fragment扩展了androidx.fragment.app.Fragment
。
您正在导入使用android.support.v4.app.FragmentActivity
的{{1}}。这是两个不同的类,因此它们是不兼容的。
您需要将应用迁移到Android X:https://developer.android.com/jetpack/androidx/migrate
然后,在您的android.support.v4.app.Fragment
文件中,将build.gradle
替换为com.android.support:support-fragment
。
希望有帮助!