【问题标题】:How to fix inconvertible types in Android Studio如何修复 Android Studio 中的不可转换类型
【发布时间】:2019-08-04 20:51:01
【问题描述】:

我正在尝试在 Android Studio 中启动基于谷歌地图的应用程序。我按照说明开始了一项 Google 地图活动。

然后我根据说明创建了一个 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));
    }

我环顾四周,看看是否有解决方案也可以解决我的问题,但我尝试的方法都不是正确的。

有人知道怎么解决吗?一切都更新了。

【问题讨论】:

标签: google-maps android-studio


【解决方案1】:

Support Map Fragment 扩展androidx.fragment.app.Fragment

您正在导入使用android.support.v4.app.Fragmentandroid.support.v4.app.FragmentActivity。这是两个不同的类,所以它们是不兼容的。

您需要将您的应用迁移到 Android X:https://developer.android.com/jetpack/androidx/migrate

然后,在您的 build.gradle 文件中,将 com.android.support:support-fragment 替换为 androidx.fragment:fragment

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多