我正在使用safe-args将参数从一个片段传递到另一个。 Android Studio会间歇性地生成带有所有参数的fragmentArgs类。
我尝试并且确实起作用的是更改导航图文件,创建项目,然后撤消那些更改,最后再次创建项目。
使用的依赖项:
项目模块:
ext.nav_version = '2.2.0-beta01'
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
应用程序模块:
apply plugin: "androidx.navigation.safeargs.kotlin"
<fragment
android:id="@+id/someFragment"
android:name="package_name.SomeFragment"
android:label="@string/some_fragment">
<argument
android:name="source"
android:defaultValue="-1"
app:argType="integer" />
<argument
android:name="nationalId"
android:defaultValue="-1"
app:argType="integer" />
<argument
android:name="hudumaNumber"
android:defaultValue="-1"
app:argType="string" />
<argument
android:name="middleName"
android:defaultValue="None"
app:argType="string" />
</fragment>
我希望所有参数都可以在生成的类中找到,但事实并非如此。
答案 0 :(得分:6)
尝试切换到:
apply plugin: "androidx.navigation.safeargs"
代替:
apply plugin: "androidx.navigation.safeargs.kotlin"
这将在app \ build \ generated文件夹内生成Java代码而不是Kotlin代码。这不会影响您自己的代码,您可以继续对片段使用Kotlin或Java。
答案 1 :(得分:2)
您只需要重建项目,
答案 2 :(得分:0)
我的问题是我删除了 name
中的 nav_graph.xml
属性
<fragment
android:id="@+id/emailVerifyFragment"
android:name="com.package.name.EmailVerifyFragment" <<<--- this is necessary!
tools:layout="@layout/fragment_email_address_verify">
答案 3 :(得分:-1)
来自文档 Pass data between destinations
启用安全Args后,您生成的代码包含以下内容 每个动作以及每个动作的类型安全类和方法 发送和接收目的地
所以您必须添加
apply plugin: "androidx.navigation.safeargs.kotlin"