Я только что создал новый проект в Kotlin и хотел добавить в него навигацию и безопасные аргументы.
Я создал 2 фрагмента (DishListFragment, DishDetailFragment) и навигационный граф с действием одного фрагмента на другой в нем. Я добавил одну кнопку в свой первый фрагмент и установил прослушиватель кликов, используя привязку представления:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.deneme.setOnClickListener {
val action = DishListFragmentDirections.actionDishListFragmentToDishDetailFragment()
findNavController().navigate(action)
}
}
но когда я пытаюсь создать действие направления с именем DishListFragmentDirections, студия Android выдает мне красные ошибки:
Unresolved reference: DishListFragmentDirections
и говорит, что мне следует создать класс DishListFragmentDirections.
Что я пробовал:
В файл build.gradle уровня приложения я добавил:
implementation(libs.androidx.navigation.safe.args.generator)
implementation(libs.androidx.navigation.safe.args.gradle.plugin)
Я пробовал аннулировать кеши и пересобрать проект, но ничего не помогло. Я пробовал что-то делать в документе, но думаю, что структура изменилась или что-то в этом роде.
Модуль build.gradle.ktsplugins {
alias(libs.plugins.androidApplication)
alias(libs.plugins.jetbrainsKotlinAndroid)
}
android {
namespace = "com.example.myapplication"
compileSdk = 34
defaultConfig {
applicationId = "com.example.myapplication"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
buildFeatures {
viewBinding = true
}
}
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)
implementation(libs.androidx.navigation.fragment)
implementation(libs.androidx.navigation.safe.args.generator)
implementation(libs.androidx.navigation.safe.args.gradle.plugin)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
}
Проект build.gradle.kts
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.jetbrainsKotlinAndroid) apply false
}
Подробнее здесь: https://stackoverflow.com/questions/781 ... generating