You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio无法解析符号ActionFirstFragmentToSecondFragment求助

Android Studio无法解析Safe Args生成的Action类问题

我是Android开发初学者,使用Android Studio Flamingo与JDK20。已在项目和模块的build.gradle中配置Safe Args并同步Gradle,且在SecondFragment对应的导航图中添加了参数,但编写跳转代码时,Android Studio提示无法解析符号ActionFirstFragmentToSecondFragment。该按钮预期功能是将TextView中的数值传递到SecondFragment页面。

错误代码位置

public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    view.findViewById(R.id.random_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int currentCount = Integer.parseInt(showCountTextView.getText().toString());
            FirstFragmentDirections.ActionFirstFragmentToSecondFragment action = 
                FirstFragmentDirections.actionFirstFragmentToSecondFragment(currentCount);
            NavHostFragment.findNavController(FirstFragment.this).navigate(action);
        }
    });
}

项目级build.gradle文件

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    dependencies {
        def nav_version = "2.6.0-rc02"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}
plugins {
    id 'com.android.application' version '8.0.2' apply false
    id 'com.android.library' version '8.0.2' apply false
}

模块级build.gradle文件

plugins {
    id 'com.android.application'
}

apply plugin: 'androidx.navigation.safeargs'

android {
    namespace 'com.example.myproject'
    compileSdk 34

    defaultConfig {
        applicationId "com.example.myproject"
        minSdk 33
        targetSdk 34
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildFeatures {
        viewBinding true
    }

}

dependencies {
    constraints{
        implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") {
            because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
        }

        implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0") {
            because("kotlin-stdlib-jdk8 is now a part of kotlin-stdlib")
        }
    }

    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.9.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.navigation:navigation-fragment:2.6.0'
    implementation 'androidx.navigation:navigation-ui:2.6.0'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4'
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

}

已尝试的无效操作

  • 修改Gradle版本、target SDK版本
  • 调整apply plugin: 'androidx.navigation.safeargs'的位置并重新构建
  • 查阅相关问题帖子但未解决

可行解决步骤

1. 确认导航图配置正确性

打开res/navigation/nav_graph.xml:

  • 检查FirstFragment到SecondFragment的action是否存在,且已添加匹配类型的参数(比如和currentCount对应的int类型)
  • 确保action的id为action_firstFragment_to_secondFragment(Safe Args生成的类名基于该id的驼峰命名规则)

2. 统一Navigation组件版本

项目级build.gradle中使用的nav_version是2.6.0-rc02,但模块依赖的navigation-fragment/navigation-ui是2.6.0,版本不一致会导致生成类无法被识别。将项目级的nav_version改为2.6.0,同步Gradle后重新构建。

3. 强制重新生成Safe Args代码

  • 点击Android Studio右侧Gradle面板,找到目标模块 -> Tasks -> other -> 运行generateSafeArgsDebug(release环境则选generateSafeArgsRelease)
  • 或者执行Build -> Clean Project,再执行Build -> Rebuild Project,强制重新生成所有自动生成类

4. 调整插件应用方式(适配AGP 8.0+)

对于Android Studio Flamingo对应的AGP 8.0+版本,推荐使用plugins DSL方式替代旧的apply plugin写法:
将模块级build.gradle中的插件配置修改为:

plugins {
    id 'com.android.application'
    id 'androidx.navigation.safeargs'
}

同步Gradle后重新构建项目

5. 降低JDK版本兼容

JDK20与Safe Args可能存在兼容问题,尝试将JDK版本切换为JDK17或JDK8,再重新构建项目

内容的提问来源于stack exchange,提问作者R.Tech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:45:04