java.lang.IllegalArgumentException:二进制XML文件第7行:带有另一个com.google.android.gms.maps.MapFragment片段

java.lang.IllegalArgumentException:二进制XML文件第7行:带有另一个com.google.android.gms.maps.MapFragment片段,android,android-fragments,android-mapview,Android,Android Fragments,Android Mapview,我已经显示了地图片段,它位于导航抽屉片段的第一个位置。在第一次显示地图时没有任何错误。如果我选择第二次,它将给出android.view.InflateException。 共有8个项目的抽屉菜单。除了这个地图片段,其他的工作正常。 下面我给出了我的代码。请帮助我 HomeFragment.java fragment_home.xml 格雷德尔先生 经过长时间的研究,我找到了解决我自己问题的办法。 只需将MapFragment从java和xml更改为SupportMapFragment 碎片 X

我已经显示了地图片段,它位于导航抽屉片段的第一个位置。在第一次显示地图时没有任何错误。如果我选择第二次,它将给出android.view.InflateException。 共有8个项目的抽屉菜单。除了这个地图片段,其他的工作正常。 下面我给出了我的代码。请帮助我

HomeFragment.java

fragment_home.xml

格雷德尔先生


经过长时间的研究,我找到了解决我自己问题的办法。 只需将MapFragment从java和xml更改为SupportMapFragment

碎片

Xml


我不知道那个例外。如果有人知道,请解释。

上面提到的@MichaelDodd解决方案可能重复,但我在Map Fragment中遇到了这个问题。其他片段工作正常,在这种情况下,您是否也可以发布您的应用程序级别builld.gradle?只想检查您的依赖项是否正确,如果删除了行android:name=com.google.android.gms.maps.MapFragment,您是否仍然会收到相同的错误?显然,这不会解决你的问题,但你想统治其他东西out@MichaelDodd我已经编辑了我的问题,请检查一下。我想我可以为你的答案提供一个解释,在谷歌的无限智慧中,有两种类型的片段,android.app.fragment和android.support.v4.app.fragment。它们的用途相同,但分开管理,就像树上的树枝一样有效。因此,依赖或源于它们的一切都被分为内置和支持。两者互不兼容,因此虽然MapFragment依赖于android.app.Fragment,但您使用的是android.support.v4.app;片段,因此需要使用SupportMapFragment。完全有道理’\_ツ_/¯
    public class HomeFragments extends Fragment implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks {

    private GoogleMap mGoogleMap;

    private GoogleApiClient mGoogleApiClient;

     public HomeFragments() {
    }

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

    private void initViews(View view) {
        try {
            MapFragment mapFragment = (MapFragment) getActivity().getFragmentManager().findFragmentById(R.id.frag_home_map);
            mapFragment.getMapAsync(this);

            FloatingActionButton mMapTypeFab = view.findViewById(R.id.fab_home_map_type);
            mMapTypeFab.setOnClickListener(this);

            mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
                    .addConnectionCallbacks(this)
                    .addApi(LocationServices.API)
                    .build();

        } catch (Exception e) {
            log(TAG, e);
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        mGoogleApiClient.connect();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mGoogleApiClient.isConnected()) {
            mGoogleApiClient.disconnect();
        }
    }

    private void mapUISetting() {
        try {
            mGoogleMap.getUiSettings().setAllGesturesEnabled(true);
            mGoogleMap.getUiSettings().setZoomControlsEnabled(true);
        } catch (Exception e) {
            log(TAG, e);
        }
    }

       @Override
    public void onConnected(@Nullable Bundle bundle) {

    }

    @Override
    public void onConnectionSuspended(int i) {

    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mGoogleMap = googleMap;
        if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
                != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(),
                Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            AppUtils.showToast(getActivity(), "Allow Location Permission");
            return;
        }
        mapUISetting();
        mGoogleMap.setMyLocationEnabled(true);
    }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment
        android:id="@+id/frag_home_map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_home_map_type"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="@dimen/margin_10dp"
        android:layout_marginBottom="@dimen/margin_25dp"
        android:elevation="@dimen/margin_5dp"
        android:src="@drawable/ic_fab_map_layer"
        app:backgroundTint="@color/colorAppWhite"
        app:fabSize="normal" />

</RelativeLayout>
FATAL EXCEPTION: main
    Process: com.app.newt.employee, PID: 30594
    android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class fragment
        at android.view.LayoutInflater.inflate(LayoutInflater.java:551)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
        at com.app.newt.employee.fragments.HomeFragments.onCreateView(HomeFragments.java:54)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802)
        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:733)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:7325)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
     Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
        at com.app.newt.employee.fragments.HomeFragments.onCreateView(HomeFragments.java:54) 
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439) 
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460) 
        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) 
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) 
        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802) 
        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625) 
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411) 
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366) 
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) 
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:733) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:7325) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
     Caused by: java.lang.IllegalArgumentException: Binary XML file line #7: Duplicate id 0x7f080065, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.maps.MapFragment
        at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2227)
        at android.app.FragmentController.onCreateView(FragmentController.java:99)
        at android.app.Activity.onCreateView(Activity.java:6085)
        at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:389)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:766)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) 
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) 
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:527) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
        at com.app.newt.employee.fragments.HomeFragments.onCreateView(HomeFragments.java:54) 
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439) 
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460) 
        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) 
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) 
        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802) 
        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625) 
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411) 
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366) 
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) 
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:733) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:7325) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.app.employee"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            buildConfigField "String", "ENCRYPTION_KEY", "$rootProject.encryptionKey"
            buildConfigField "String", "BASE_URL", "$rootProject.proServer"
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            debuggable false
        }
        debug {
            buildConfigField "String", "ENCRYPTION_KEY", "$rootProject.encryptionKey"
            buildConfigField "String", "BASE_URL", "$rootProject.localServer"
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

    implementation "com.android.support:cardview-v7:$rootProject.supportLibraryVersion"
    implementation "com.android.support:design:$rootProject.supportLibraryVersion"
    implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitLibraryVersion"
    implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitLibraryVersion"
    implementation "com.squareup.retrofit2:adapter-rxjava:$rootProject.retrofitLibraryVersion"
    implementation 'com.squareup.okhttp3:logging-interceptor:3.6.0'
    implementation 'io.reactivex:rxjava:1.1.7'
    implementation 'io.reactivex:rxandroid:1.2.1'
    implementation 'com.github.paolorotolo:appintro:4.1.0'

    implementation 'com.google.android.gms:play-services-maps:16.0.0'
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    implementation 'com.google.android.gms:play-services-gcm:16.0.0'
    implementation 'com.google.android.gms:play-services-places:16.0.0'

}
SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.frag_home_map);
            mapFragment.getMapAsync(this);
<fragment
        android:id="@+id/frag_home_map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />