Pertanyaan Jenis yang tidak dapat dibantah; tidak dapat mentransmisi android.app.fragment


Saya seorang pemula dalam pemrograman di studio android, saya mencoba bekerja dengan Google Maps (pengaturan tujuan, rute, dan banyak lagi) di laci navigasi, di mana saya memiliki beberapa fragmen, dan satu khusus untuk peta Google, saya mengalami masalah menggunakan penanda dan bekerja di peta dengan onMapReady()    metode, saya bisa menemukan bahwa alih-alih saya harus menggunakan onActivityCreated() metode, tetapi setelah saya mulai mengerjakannya, ia mulai memberi saya kesalahan berikut: Jenis yang tidak dapat dibatalkan, tidak dapat mentransmisi android.app.Fragment untuk com.google.android.gms.maps.SupportMapFragment. di baris kode berikut: mapFragment = (SupportMapFragment) fm.findFragmentById(R.id.map); juga memberi saya kesalahan kedua: Jenis argumen ke dua yang salah, Ditemukan: com.google.android.gms.maps.SupportMapFragment Wajib: android.app.Fragment di baris kode berikut: fm.beginTransaction().replace(R.id.map, mapFragment).commit();. Sayangnya saya tidak dapat menemukan jawaban atau solusi untuk masalah ini dan akan menghargai bantuan Anda.

Berikut adalah kode lengkap saya untuk fragmen tempat peta berada:

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);

                }
            });
        }
    }

}

4
2018-03-22 00:52


asal


Jawaban:


Anda opcion1Fragment memanjang dari android.app.Fragment;. Tetapi Anda harus menggunakan kelas dari android.support.v4.app. Jadi Anda perlu:

  1. Ubah impor Anda dari: import android.app.Fragment; untuk import android.support.v4.app.Fragment; 
  2. Ubah impor Anda dari import android.app.FragmentManager; untuk import android.support.v4.app.FragmentManager;

Dan masalah Anda akan diperbaiki.

Semoga ini membantu!!


9
2018-03-22 05:08