ksg*_*rkn 24 kotlin android-navigation android-jetpack
我使用导航库和safeargs来传递数据.我像这样定义片段的参数.
<fragment
android:id="@+id/otherFragment"
android:name="com.asd.navigate.OtherFragment"
android:label="OtherFragment">
<argument
android:name="screenTitle"
android:defaultValue="0"
app:type="string" />
</fragment>
Run Code Online (Sandbox Code Playgroud)
生成的OtherFragmentArgs,我可以使用它但是当我单击"make project"时,OtherFragmentDirection类不生成.是那个错误还是我必须做一些与众不同的事情.
Thnx的建议.
buildscript {
...
dependencies {
...
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha01"
}
}
Run Code Online (Sandbox Code Playgroud)
的build.gradle
apply plugin: "androidx.navigation.safeargs"
Run Code Online (Sandbox Code Playgroud)
MainActivity.kt
San*_*eev 64
我忘了在app.gradle文件中应用插件,只需添加这一行
apply plugin: "androidx.navigation.safeargs.kotlin"
Run Code Online (Sandbox Code Playgroud)
或者这一行,如果你使用的是 java
apply plugin: "androidx.navigation.safeargs"
Run Code Online (Sandbox Code Playgroud)
Chr*_*ian 35
我在使用 android studio 4.2 预览版时遇到了类似的问题。
问题是 IDE 不知何故没有选择插件放置生成的方向类的源文件夹。因此,将以下内容添加到我的应用程序 build.gradle 文件中为我解决了这个问题。
sourceSets {
main {
java {
srcDirs += 'build/generated/source/navigation-args'
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
小智 19
查找作为导航源的片段的类.如果定义从FragmentA到FragmentB的导航,您将找到FragmentADirections类,其中包含您在其中定义的操作(在nav_graph.xml中).
Ale*_* B. 13
如果您已经添加了dependencies > classpath和apply plugin,但不应用更改,一定要Clean和Built为了改变该项目得到应用。
在 Android Studio 中:
Build tab > Clean projectBuild tab > ReBuild projectRam*_*mli 13
如果上述所有答案对您都不起作用,并且您仍然遇到未生成路线类的问题。确保您正在寻找正确的方向类。
例如,我们必须从FragmentAto传递参数FragmentB。
在导航图文件中,我们必须在 的<argument/>标签下添加FragmentB标签。这样,我们将得到两个生成的类FragmentBArgs和FragmentADirections. 如您所见,用于创建方向类的是FragmentA的名称,而不是FragmentB.
因此,请记住,与此问题的用户正在寻找的内容不同,生成的路线类将获得附加有“路线”一词的动作起始片段的类名称。不是目标片段的类名(参数的所有者)。
以下是文档中的内容:
为动作起源的每个目的地创建一个类。 此类的名称是始发目的地的名称,并附加“方向”一词。
为接收目的地创建一个类。此类的名称是目的地的名称,附加“Args”一词。
此外,在 action 标签下添加参数标签不会生成路线类。它用于为目标片段的参数提供不同的默认值。
希望这可以帮助!
Fab*_*abi 13
我们可以通过在 gradle 中添加以下代码并重建应用程序来解决此问题。在项目gradle中添加以下代码。
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
Run Code Online (Sandbox Code Playgroud)
在应用程序gradle中添加以下代码
apply plugin: "androidx.navigation.safeargs"
Run Code Online (Sandbox Code Playgroud)
Zde*_*ima 13
正如 Christian 所写,添加 source set do app gradle 文件有帮助。对我来说,这个问题出现在 Android Studio 4.1 和 4.2 中。在 Kotlin DSL 中:
android {
....
sourceSets {
getByName("main").java.srcDirs("build/generated/source/navigation-args")
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
对我来说,我意识到我还需要将相同的参数放入 navi_graph.xml 中的接收器片段中,以便生成 Arg 类(已经有方向)。例如:
<fragment android:id="@+id/receiver_fragment" ...>
<argument android:name="arg_from_sender_fragment".../>
<argument android:name="arg2_from_sender_fragment".../>
</fragment>
Run Code Online (Sandbox Code Playgroud)
应用程序->build.gradle:
在插件内部,我添加了以下行来解决该问题:
plugins {
id "androidx.navigation.safeargs.kotlin"
}
Run Code Online (Sandbox Code Playgroud)
小智 5
所有解决方案都不适合我,我已将所有解决方案同步到 build.gradle 中。我找到方向和参数的唯一方法是从 Android 更改为 Project。打开应用程序 -> 包 -> 构建 -> 生成 -> 源 -> 导航参数。您将获得片段方向和参数。下面是截图,希望对大家有用!
片段方向和参数
| 归档时间: |
|
| 查看次数: |
3304 次 |
| 最近记录: |