不可转换类型:无法将android.app.fragment强制转换

4
我是个新手在Android Studio上编程,我正试图在导航抽屉里使用谷歌地图(设置目的地、路线等),其中有多个片段,一个特别用于谷歌地图。我遇到了一些问题,无法使用标记并借助onMapReady()方法在地图上工作。我发现我应该使用onActivityCreated()方法,但一旦我开始处理它,就会出现下面的错误:Inconvertible types,不能将android.app.Fragment强制转换为com.google.android.gms.maps.SupportMapFragment。在以下代码行中:mapFragment = (SupportMapFragment) fm.findFragmentById(R.id.map); 以及给我第二个错误:Wrong 2nd argument type,Found: com.google.android.gms.maps.SupportMapFragment Required: 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);

                }
            });
        }
    }

}
1个回答

11

您的 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 - Ariel Guevara
很高兴能帮忙...请标记问题已解决 ;) - Gueorgui Obregon
无法使用'import androidx.fragment.app.Fragment;' @GueorguiObregon - mody

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接