代码之家  ›  专栏  ›  技术社区  ›  Henry Twist Jjonns

弹出输入动画不使用Jetpack导航组件

  •  0
  • Henry Twist Jjonns  · 技术社区  · 3 年前

    我一直在使用Jetpack导航组件(2.3.5,尽管我也测试了旧版本),并尝试在两个简单目的地之间添加转换。但是,使用 popEnterAnim 属性根本不运行。相反,重新进入的片段会立即出现。

    TextView .

    主要活动

    <androidx.fragment.app.FragmentContainerView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph" />
    
    class ActivityMain : AppCompatActivity(R.layout.main)
    

    片段1

    class Fragment1 : Fragment(R.layout.fragment_1) {
    
        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    
            view.setOnClickListener {
    
                findNavController().navigate(R.id.action_fragment1_to_fragment2)
            }
        }
    }
    

    片段2

    class Fragment2: Fragment(R.layout.fragment_2)
    

    导航图

    <navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/nav_graph.xml"
        app:startDestination="@id/fragment1">
    
        <fragment
            android:id="@+id/fragment1"
            android:name="uk.henrytwist.projectsource.Fragment1"
            android:label="MainFragment" >
            <action
                android:id="@+id/action_fragment1_to_fragment2"
                app:destination="@id/fragment2"
                app:enterAnim="@anim/transition_rise_up_enter"
                app:exitAnim="@anim/transition_fade_exit"
                app:popEnterAnim="@anim/transition_fade_pop_enter"
                app:popExitAnim="@anim/transition_rise_up_pop_exit" />
        </fragment>
        <fragment
            android:id="@+id/fragment2"
            android:name="uk.henrytwist.projectsource.Fragment2"
            android:label="Fragment2" />
    </navigation>
    
    0 回复  |  直到 3 年前
        1
  •  4
  •   Henry Twist Jjonns    3 年前

    事实证明,这实际上是由于AndroidX片段库中的一个bug造成的( androidx.fragment:fragment:1.3.2 )现在已在版本中更正 1.3.3 . 这个 changelog

    修复了片段1.3.2中引入的一个回归,该回归会导致弹出包含setPrimaryNavFragment操作(如NavHostFragment使用的操作)的FragmentTransaction时PopCenter动画无法运行。(I38c87,b/183877426)