【问题标题】:Jetpack compose navigation architecture without fragment?Jetpack 组成没有片段的导航架构?
【发布时间】:2021-04-09 01:27:22
【问题描述】:

我对@9​​87654321@ 记录的新 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()
        }
    }
}

【问题讨论】:

    标签: android-fragments navigation android-jetpack-compose


    【解决方案1】:

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

    【讨论】:

    • PreferenceFragmentCompat 的设置怎么样?我们必须手动编码设置吗?我在 Jetpack Compose 文档中没有看到任何有关设置的信息。
    • 我对偏好一无所知,但如果您需要与旧视图系统的互操作性,您现在可能应该坚持使用片段。您可以查看Crane compose sample 在 Compose 中使用 Android 视图
    • 我明白了。老实说,我认为不再需要像 Jetpack compose 那样保持生命周期。例如,屏幕可以在配置更改下完全重构,而不是破坏活动。那会简单得多。但我可能错过了一些东西。
    • 答案只是一种观点还是依赖于 Android 开发者网站上指出的任何信息?
    • @rocknow android 文档建议使用 compose 导航库 (developer.android.com/jetpack/compose/navigation)。在仅撰写应用程序中使用片段很笨拙,并且会增加多余的样板。
    猜你喜欢
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多