没有使用Fragment的Jetpack Compose导航架构?

21

关于新的Jetpack Compose导航组件androidx.navigation:navigation-compose,我有些困惑,文档链接为https://developer.android.com/jetpack/compose/navigation

如果使用Jetpack Compose,单Activity架构中不带Fragment的方式比单Activity架构中带多个Fragment的方式更受欢迎,这样说对吗?

我知道我们仍然可以像以下方式一样同时使用Fragment和Jetpack Compose:

class MyFragment: Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        return ComposeView(requireContext()).apply{
            setContent {
                MyFragmentComposable()
            }
        }
    }
}

但我希望确保当使用androidx.navigation:navigation-compose时,我们不再需要使用fragment,可以这样开始:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            MyApp()
        }
    }
}
1个回答

11

是的,你说得对。不使用片段是首选。你可以使用NavHost来声明你的导航图。


1
PreferenceFragmentCompat 用于设置,我们需要手动编写设置吗?我在 Jetpack Compose 文档中没有看到任何关于设置的内容。 - u2gilles
1
我对偏好设置一无所知,但如果您需要与旧视图系统进行互操作性,现在最好还是坚持使用片段。您可以查看Crane compose sample,了解如何在Compose中使用Android Views。 - Noah
我明白了。说实话,我认为随着Jetpack Compose的出现,保持生命周期不再必要。例如,在配置更改时,屏幕可以完全重新组合而不是销毁活动。这将更加简单。但我可能错过了什么。 - u2gilles
1
答案是基于 Android 开发者网站上指出的信息还是仅仅是个人观点? - rocknow
2
@rocknow,Android文档建议使用Compose Navigation库(developer.android.com/jetpack/compose/navigation)。在仅使用Compose的应用程序中使用片段会很笨重,并增加过多的样板代码。 - Noah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接