为什么 android studio 没有为所有安全参数生成代码?
Why is android studio not generating code for all the safe args?
我正在使用安全参数将参数从一个片段传递到另一个片段。 Android studio 间歇性地生成包含所有参数的 fragmentArgs class。
我已经尝试过并且确实有效的方法是更改导航图文件,制作项目,然后撤消这些更改,最后再次制作项目。
使用的依赖项:
项目模块:
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>
我希望在生成的 class 中找到所有参数,但事实并非如此。
尝试切换到:
apply plugin: "androidx.navigation.safeargs"
而不是:
apply plugin: "androidx.navigation.safeargs.kotlin"
这将在您的 app\build\generated 文件夹中生成 Java 代码而不是 Kotlin 代码。这不会影响您自己的代码,您可以继续为您的片段使用 Kotlin 或 Java。
你只需要重建你的项目,
- 暂时删除所有导致错误的行
- 重建你的项目
- 再次添加这些行
我的问题是我删除了 nav_graph.xml
中的 name
属性
<fragment
android:id="@+id/emailVerifyFragment"
android:name="com.package.name.EmailVerifyFragment" <<<--- this is necessary!
tools:layout="@layout/fragment_email_address_verify">
我正在使用安全参数将参数从一个片段传递到另一个片段。 Android studio 间歇性地生成包含所有参数的 fragmentArgs class。
我已经尝试过并且确实有效的方法是更改导航图文件,制作项目,然后撤消这些更改,最后再次制作项目。
使用的依赖项:
项目模块:
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>
我希望在生成的 class 中找到所有参数,但事实并非如此。
尝试切换到:
apply plugin: "androidx.navigation.safeargs"
而不是:
apply plugin: "androidx.navigation.safeargs.kotlin"
这将在您的 app\build\generated 文件夹中生成 Java 代码而不是 Kotlin 代码。这不会影响您自己的代码,您可以继续为您的片段使用 Kotlin 或 Java。
你只需要重建你的项目,
- 暂时删除所有导致错误的行
- 重建你的项目
- 再次添加这些行
我的问题是我删除了 nav_graph.xml
name
属性
<fragment
android:id="@+id/emailVerifyFragment"
android:name="com.package.name.EmailVerifyFragment" <<<--- this is necessary!
tools:layout="@layout/fragment_email_address_verify">