gpt4 book ai didi

android - 导航架构组件 - 未生成 DestinationFragmentArgs

转载 作者:行者123 更新时间:2023-12-02 21:21:09 25 4
gpt4 key购买 nike

我在应用程序 gradle 中有这个:

apply plugin: 'androidx.navigation.safeargs'

implementation 'android.arch.navigation:navigation-fragment-ktx:1.0.0'
implementation 'android.arch.navigation:navigation-ui-ktx:1.0.0'

在项目 gradle 中:

classpath 'android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0'

导航图:

<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/navigation_graph"
app:startDestination="@id/loginPhoneNumberFragment">

<fragment
android:id="@+id/loginPhoneNumberFragment"
android:name="...fragments.LoginPhoneNumberFragment"
android:label="@string/login_activity_title"
tools:layout="@layout/fragment_login_phone_number">
<action
android:id="@+id/action_loginPhoneNumberFragment_to_loginCodeFragment"
app:destination="@id/loginCodeFragment">
<argument
android:name="prefix"
app:argType="string" />
<argument
android:name="phone_number"
app:argType="string" />
</action>
</fragment>

<fragment
android:id="@+id/loginCodeFragment"
android:name="...LoginCodeFragment"
android:label="@string/login_activity_title"
tools:layout="@layout/fragment_login_code" />

</navigation>

登录电话号码 fragment :

val action = LoginPhoneNumberFragmentDirections.actionLoginPhoneNumberFragmentToLoginCodeFragment(prefix, phoneNumber)
view?.findNavController()?.navigate(action)

登录代码 fragment :

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

val prefix = LoginCodeFragmentArgs.fromBundle(arguments).prefix //LoginCodeFragmentArgs is not recognized

}

在 LoginPhoneNumberFragment 中,它创建“LoginPhoneNumberFragmentDirections”类,但在目标类 LoginCodeFragment 上,它无法识别“LoginCodeFragmentArgs”。

有人可以告诉我我错过了什么吗?(我清理并重建,并尝试无效缓存...)

最佳答案

好吧,经过大量搜索后我发现了我的错误 -参数应该位于 Destination fragment 上,而不是在起始 fragment 上:

<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/navigation_graph"
app:startDestination="@id/loginPhoneNumberFragment">

<fragment
android:id="@+id/loginPhoneNumberFragment"
android:name="...fragments.LoginPhoneNumberFragment"
android:label="@string/login_activity_title"
tools:layout="@layout/fragment_login_phone_number">
<action
android:id="@+id/action_loginPhoneNumberFragment_to_loginCodeFragment"
app:destination="@id/loginCodeFragment">
</action>
</fragment>

<fragment
android:id="@+id/loginCodeFragment"
android:name="...fragments.LoginCodeFragment"
android:label="@string/login_activity_title"
tools:layout="@layout/fragment_login_code" >
<argument
android:name="prefix"
app:argType="string"
android:defaultValue="888" />
<argument
android:name="phone_number"
app:argType="string"
android:defaultValue="88888888"/>
</fragment>

</navigation>

您还可以通过导航图设计手动添加它 - 按目标 fragment 并按参数部分上的“+”,它会将其添加到文本文件中。

关于android - 导航架构组件 - 未生成 DestinationFragmentArgs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56360689/

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