我正在迁移多个应用程序以使用导航组件,但遇到一个问题-android-safe-args-gradle-plugin
生成的Directions / Args类在Android Studio中无法识别。
表明此问题的代码位于github.com/wooldridgetm/android-navigation.git,但问题的症结在于,在下面的代码中, HomeFragmentDirections 无法识别。摘自HomeFragment
类的第76-82行。
val b2 = view.findViewById<Button>(R.id.navigate_action_button)
b2.setOnClickListener {
// PROBLEM: HomeFragmentDirections isn't recognized.
val action = HomeFragmentDirections.nextAction()
// PROBLEM: results in Unresolved reference: flowStepNumber
// action.flowStepNumber = 1
findNavController().navigate(action)
}
我知道文档说的是什么,我知道HomeFragmentDirections
类是由插件生成的,并且位于app / build / 生成的 / < strong>源 / 导航参数 / 调试 / code / example / android / codelabs / navigation,但AS无法识别。
我也知道这确实在插件的v2之前有效...但是现在不起作用,我什至无法获得一个简单的示例来按预期方式工作。
有什么问题的想法吗?
背景
我在10.14.6的MacOS Mojave上使用AS 3.5。
项目build.gradle
的依存关系:
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50"
应用build.gradle
文件:
apply plugin: 'androidx.navigation.safeargs.kotlin'
dependencies {
// Navigation
def nav_version = "2.1.0"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
}
答案 0 :(得分:1)
在项目选项卡中选择 Project 视图,这样您就可以看到实际的文件夹。您会注意到 app/build 文件夹变成橙色,这意味着它被排除在外。只需右键单击> 将目录标记为> 取消排除,然后再次右键单击> 将目录标记为> 源根目录。该文件夹将像 java 文件夹一样变蓝,AS 应识别生成的类。
虽然我不确定我是否相信您要使用的所有代码实际上都在 app/build/generated 中,因此您可以更具体地将其标记为源根目录。 So it should look something like this.
答案 1 :(得分:0)
Android Studio / Lint没有“看到”这些类的原因是BIAD(b / c,我是个假人)。
我通过首选项> 编辑器> 文件类型排除了项目面板中的<connectionStrings>
文件夹>> 忽略文件和文件夹。
无论如何,从忽略文件和文件夹中删除build
文件夹就可以了。
答案 2 :(得分:0)
我也遇到了类似的问题,即使没有手动添加正确的导入操作,这些操作显然也已添加到导航图中,而不是“自动完成”,或者显示了尝试访问它们的kotlin类中的导入选项。
对我来说,解决方法只是重建项目,然后它们会自动出现。