gpt4 book ai didi

android - 如何从应用程序或其他 dfm 导航到动态功能模块中的 Jetpack Compose 功能?

转载 作者:行者123 更新时间:2023-12-04 17:15:17 35 4
gpt4 key购买 nike

使用 Fragments 和 Activity 可以在动态功能模块中打开 Fragment 或 Activity。

例如,应用程序模块可以使用导航到登录或暂存动态功能模块

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/mainFragment">

<fragment
android:id="@+id/mainFragment"
android:name="com.smarttoolfactory.hopinstream.MainFragment"
android:label="MainFragment"
tools:layout="@layout/fragment_main">

<action
android:id="@+id/action_mainFragment_to_loginFragment"
app:destination="@id/nav_graph_login"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:launchSingleTop="true"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:popUpTo="@id/mainFragment"
app:popUpToInclusive="true" />

<action
android:id="@+id/action_mainFragment_to_stageFragment"
app:destination="@id/nav_graph_stage"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:launchSingleTop="true"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:popUpTo="@id/mainFragment"
app:popUpToInclusive="true" />

</fragment>

<!-- dynamic feature module-->
<include-dynamic
android:id="@+id/nav_graph_login"
android:name="com.smarttoolfactory.login"
app:graphResName="nav_graph_login"
app:moduleName="login" />

<include-dynamic
android:id="@+id/nav_graph_stage"
android:name="com.smarttoolfactory.stage"
app:graphResName="nav_graph_stage"
app:moduleName="stage">

<argument
android:name="sessionArgs"
app:argType="com.smarttoolfactory.domain.model.UserSession" />
</include-dynamic>

</navigation>

登录动态功能模块导航如下

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@id/nav_graph_login"
app:moduleName="login"
app:startDestination="@id/loginFragment">

<fragment
android:id="@+id/loginFragment"
android:name="com.smarttoolfactory.login.LoginFragment"
android:label="Login Fragment"
tools:layout="@layout/fragment_login">
<action
android:id="@+id/action_loginFragment_to_stageFragment"
app:destination="@id/nav_graph_stage"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right"
app:popUpTo="@id/nav_graph_login"
app:launchSingleTop="true"
app:popUpToInclusive="true" />
</fragment>

<include-dynamic
android:id="@id/nav_graph_stage"
android:name="com.smarttoolfactory.stage"
app:graphResName="nav_graph_stage"
app:moduleName="stage">

<argument
android:name="sessionArgs"
app:argType="com.smarttoolfactory.domain.model.UserSession" />
</include-dynamic>
</navigation>

在应用模块的 fragment 中,可以通过

        val direction = MainFragmentDirections
.actionMainFragmentToLoginFragment()

findNavController().navigate(direction)

使用 JetPackCompose 导航应用于单个模块应用程序

val navController = rememberNavController()

NavHost(navController = navController, startDestination = "profile") {
composable("profile") { Profile(/*...*/) }
composable("friendslist") { FriendsList(/*...*/) }
/*...*/
}

在上面的代码中,您在单个模块应用程序的应用程序模块中拥有每个可组合项。由于应用程序无法了解功能模块,是否有一种方法可以在不使用任何 fragment 作为目的地的情况下从应用程序导航到动态功能模块或在动态功能模块之间导航?

最佳答案

我也在找同样的东西。不幸的是,它还不可用。目前有一个功能请求。

问题链接: https://issuetracker.google.com/issues/183677219

关于android - 如何从应用程序或其他 dfm 导航到动态功能模块中的 Jetpack Compose 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68814999/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com