繁体   English   中英

在Kotlin中从一个片段导航到另一个片段

[英]Navigating from one fragment to another fragment in Kotlin

我正在尝试从一个片段到主要片段。 编译器不喜欢我的代码,但是我不确定是什么问题。 过渡片段的最佳实践是什么?

//这是我要导航到的主要片段的xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:app="http://schemas.android.com/apk/res-auto"
             xmlns:tools="http://schemas.android.com/tools"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             tools:context=".MapFragment"
             android:id="@+id/mapFragment">

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




val fragment = Fragment(R.id.mapFragment)

                fragmentManager
                    ?.beginTransaction()
                    ?.setCustomAnimations(R.anim.abc_fade_in, 
                    R.anim.abc_fade_out)
                    ?.replace(R.id.nav_host_fragment, fragment)
                    ?.commit()

2019-07-12 17:49:45.091 9594-9594 / com.example.cribb E / AndroidRuntime:致命例外:主进程:com.example.cribb,PID:9594 android.content.res.Resources $ NotFoundException:资源ID #0x7f0800ae类型#0x12在android.content.res.Resources.loadXmlResourceParser(Resources.java:2161)在android.content.res.Resources.getLayout(Resources.java:1155)在android.view.LayoutInflater.inflate无效(LayoutInflater.java:421),位于androidx.fragment.app.Fragment.onCreateView(Fragment.java:1651),位于androidx.fragment.app.Fragment.performCreateView(Fragment.java:2595),位于androidx.fragment.app.FragmentManagerImpl。 androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)处的moveToState(FragmentManagerImpl.java:881)androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)处的androidx.fragment.app.BackStackRecord .executeOps(BackStackRecord.java:439)在androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerIm androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1866)的pl.java:2076)androidx.fragment.app.FragmentManagerImpl.exec的androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1821) (FragmentManagerImpl.java:1727)在androidx.fragment.app.FragmentManagerImpl $ 2.run(FragmentManagerImpl.java:150)在android.os.Handler.handleCallback(Handler.java:873)在android.os.Handler.dispatchMessage(Handler .java:99),位于android.os.Looper.loop(Looper.java:193),位于android.app.ActivityThread.main(ActivityThread.java:6669),位于java.lang.reflect.Method.invoke(本机方法),位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)上的com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)

问题是,因为使用的是<fragment>在你的XML标记,如果你与该XML定义片段<fragment>标签,你不能使用replace和改变你的片段。 更换

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

 <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/maps"
/>

应该做到的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM