vs as a view for a NavHost

前端 未结 3 1744
[愿得一人]
[愿得一人] 2020-12-01 14:42

When using androidx.fragment.app.FragmentContainerView as a navHost instead of a regular fragment app is not able to navigate to a destination afte

相关标签:
3条回答
  • 2020-12-01 15:04
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.frag_splash, container, false)
    }
    

    Maybe you forgot the 3rd "false" parameter above. Only this three parameters onCreateView fun can be accept.

    android developer website

    pic from : https://developer.android.com/reference/androidx/fragment/app/FragmentContainerView

    0 讨论(0)
  • 2020-12-01 15:21

    The no current navigation node error occurs when there's no graph set and you attempt to call navigate(). If it only occurs when you're using FragmentContainerView and after a configuration change, then this would be related to this bug, which is fixed and scheduled for release with Navigation 2.2.0-rc03.

    To work around this issue, you can either switch back to <fragment> or remove app:navGraph="@navigation/nav_simple" and instead call navController.setGraph(R.navigation.nav_simple).

    0 讨论(0)
  • 2020-12-01 15:22

    I do not see any explanation why replace Fragment view with FragmentContainerView. This is why add this answer:

    One of the common patterns to host fragments in an activity is to use a FrameLayout. The Android community have been doing this for years but this is going to change now. The androidx team introduced this new view called FragmentContainerView to do this for you.

    All you have to do is replace your FrameLayout with FragmentContainerView and everything should work out of the box, you won’t need to change anything on the way you handle fragment transactions.

    The benefits gained here is the improved handling of what’s called the z-ordering for fragments. Here’s the example they used, but basically this means , for example, that the exit and enter transitions between two fragments will not overlap each other. Instead this FragmentContainerView is going to start the exit animation first then the enter animation.

    If you are asking can this replace tag? then the answer is yes. All you have to do is to add android:name="your_class_name" when defining FragmentContainerView and it will use a FragmentTransaction under the hood to build and show your fragment. This mean you can use fragment transactions later on to replace it.

    Source

    Android Docs

    0 讨论(0)
提交回复
热议问题