Jetpack 组成没有片段的导航架构?
Posted
技术标签:
【中文标题】Jetpack 组成没有片段的导航架构?【英文标题】:Jetpack compose navigation architecture without fragment? 【发布时间】:2021-04-09 01:27:22 【问题描述】:我对@987654321@ 记录的新 Jetpack compose 导航组件 androidx.navigation:navigation-compose 有点困惑。
在使用 Jetpack Compose 时,我是否可以说具有 0 个片段的单活动架构优于具有多个片段的单活动架构?
我知道我们仍然可以以这种方式使用片段和 Jetpack 组合:
class MyFragment: Fragment()
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View
return ComposeView(requireContext()).apply
setContent
MyFragmentComposable()
但我想确保在使用 androidx.navigation:navigation-compose 时,我们不应该再使用片段,像这样开始:
class MainActivity : AppCompatActivity()
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
setContent
MyApp()
【问题讨论】:
【参考方案1】:是的,你是对的。优选不使用片段。您可以使用NavHost
来声明您的导航图。
【讨论】:
PreferenceFragmentCompat 的设置怎么样?我们必须手动编码设置吗?我在 Jetpack Compose 文档中没有看到任何有关设置的信息。 我对偏好一无所知,但如果您需要与旧视图系统的互操作性,您现在可能应该坚持使用片段。您可以查看Crane compose sample 在 Compose 中使用 Android 视图 我明白了。老实说,我认为不再需要像 Jetpack compose 那样保持生命周期。例如,屏幕可以在配置更改下完全重构,而不是破坏活动。那会简单得多。但我可能错过了一些东西。 答案只是一种观点还是依赖于 Android 开发者网站上指出的任何信息? @rocknow android 文档建议使用 compose 导航库 (developer.android.com/jetpack/compose/navigation)。在仅撰写应用程序中使用片段很笨拙,并且会增加多余的样板。以上是关于Jetpack 组成没有片段的导航架构?的主要内容,如果未能解决你的问题,请参考以下文章
Android Jetpack导航,另一个主机片段内的主机片段
使用 Jetpack 的 Android 导航组件销毁/重新创建的片段