【问题标题】:Why is android studio not generating code for all the safe args?为什么 android studio 不为所有安全参数生成代码?
【发布时间】:2019-11-12 08:09:49
【问题描述】:

我正在使用安全参数将参数从一个片段传递到另一个片段。 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>

我希望所有参数都能在生成的类中找到,但事实并非如此。

【问题讨论】:

标签: android kotlin android-safe-args


【解决方案1】:

尝试切换到:

apply plugin: "androidx.navigation.safeargs"

代替:

apply plugin: "androidx.navigation.safeargs.kotlin"

这将在您的 app\build\generated 文件夹中生成 Java 代码而不是 Kotlin 代码。这不会影响您自己的代码,您可以继续为 Fragments 使用 Kotlin 或 Java。

【讨论】:

  • 切换到androidx.navigation.safeargs 确实有帮助。我想知道为什么会发生这种情况
  • 注意:Java 函数不能有命名参数,例如 foo(bar = 1),所以如果你使用这些参数,在进行此更改时会出错
【解决方案2】:

你只需要重建你的项目,

  1. 暂时删除所有导致错误的行
  2. 重建您的项目
  3. 再次添加这些行

【讨论】:

    【解决方案3】:

    我的问题是我删除了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">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多