【问题标题】:Inconvertible types; cannot cast android.app.fragment不可转换的类型;无法投射 android.app.fragment
【发布时间】:2016-03-22 00:52:29
【问题描述】:

我是 android studio 编程的新手,我正在尝试在导航抽屉中使用谷歌地图(设置目的地、路线等),我有多个片段,其中一个专门用于谷歌地图,我是在使用标记和使用onMapReady() 方法在地图上工作时遇到问题,我发现我应该使用onActivityCreated() 方法,但是一旦我开始使用它,它就开始给我以下错误:不可转换类型,不能将 android.app.Fragment 转换为 com.google.android.gms.maps.SupportMapFragment。在以下代码行中:mapFragment = (SupportMapFragment) fm.findFragmentById(R.id.map); 也给了我第二个错误:错误的第二个参数类型,找到:com.google.android.gms.maps.SupportMapFragment 必需:android.app.Fragment 在以下代码行中:fm.beginTransaction().replace(R.id.map, mapFragment).commit();。不幸的是,我无法找到此问题的答案或解决方案,希望您能提供帮助。

这是我的地图所在片段的完整代码:

package demo.mapas;

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
//import android.support.v4.app.FragmentManager;
import android.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.usuario.mapas.R;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;

/**
 * Created by USUARIO on 3/12/2016.
 */
public class opcion1Fragment extends Fragment  {
    private SupportMapFragment mapFragment;




    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_option1, container, false);

        return rootView;

    }

    @Override

    public void onActivityCreated(Bundle savedInstanceState){
        super.onActivityCreated(savedInstanceState);

        FragmentManager fm = getChildFragmentManager();
        mapFragment = (SupportMapFragment) fm.findFragmentById(R.id.map);
        if(mapFragment == null){
            mapFragment = SupportMapFragment.newInstance();
            fm.beginTransaction().replace(R.id.map, mapFragment).commit();
        } else {
            mapFragment.getMapAsync(new OnMapReadyCallback() {

                @Override
                public void onMapReady(GoogleMap googleMap) {
                    googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);

                }
            });
        }
    }

}

【问题讨论】:

    标签: android google-maps android-fragments android-studio


    【解决方案1】:

    您的opcion1Fragment 是从android.app.Fragment; 扩展而来的。但是您需要使用来自android.support.v4.app 的类。所以你需要:

    1. 将您的导入从:import android.app.Fragment; 更改为 import android.support.v4.app.Fragment;
    2. 将您的导入从 import android.app.FragmentManager; 更改为 import android.support.v4.app.FragmentManager;

    您的问题将得到解决。

    希望这会有所帮助!

    【讨论】:

    • 解决了问题!深深的赞赏!! @g2o
    • 很高兴为您提供帮助...请将问题标记为已解决;)
    • 不适用于'import androidx.fragment.app.Fragment;' @GueorguiObregon
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多