FATAL EXCEPTION: main
Process: com.example.navigationexamples, PID: 6436
java.lang. NoSuchMethodError: нет компонуемого статического метода $default(Landroidx/navigation/NavGraphBuilder;Ljava/lang/String;Ljava/util/List;Ljava/util/List;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin /jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function2;ILjava/lang/Object;)V в классе Landroidx/navigation/compose/NavGraphBuilderKt; или его суперклассы (объявление androidx.navigation.compose.NavGraphBuilderKt появляется в /data/data/com.example.navigationexamples/code_cache/.overlay/base.apk/classes9.dex)
в com.example .home.HomeNavRegisterer.registerGraph(HomeNavRegisterer.kt:11)
на com.example.navigationexamples.NavHostKt$NavGraph$1.invoke(NavHost.kt:14)
на com.example.navigationexamples.NavHostKt$ NavGraph$1.invoke(NavHost.kt:13)
на androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:390)
на com.example.navigationexamples.NavHostKt.NavGraph(NavHost.kt) :13)
на com.example.navigationexamples.MainActivity$onCreate$1$1.invoke(MainActivity.kt:31)
Код: Выделить всё
interface NavigationRegisterer {
fun registerGraph(navController : NavHostController, navGraphBuilder: NavGraphBuilder)
}
Код: Выделить всё
class HomeNavRegisterer : NavigationRegisterer {
override fun registerGraph(navController: NavHostController, navGraphBuilder: NavGraphBuilder) {
navGraphBuilder.composable(Screens.HomeScreen.route) {
HomeScreen()
}
}
}
Код: Выделить всё
interface NavStarter {
fun startHomeScreen() : NavigationRegisterer
}
Код: Выделить всё
class NavStarterImpl: NavStarter{
override fun startHomeScreen(): NavigationRegisterer {
return HomeNavRegisterer()
}
}
Код: Выделить всё
@Module
@InstallIn(SingletonComponent::class)
object NavModule {
@Provides
@Singleton
fun provideStarter(): NavStarter {
return NavStarterImpl()
}
}
Код: Выделить всё
@Composable
fun NavGraph(navController: NavHostController, starterImpl: NavStarter) {
NavHost(navController = navController, startDestination = Screens.HomeScreen.route ) {
starterImpl.startHomeScreen().registerGraph(navController = navController, navGraphBuilder = this)
}
}
Код: Выделить всё
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
@Inject
lateinit var starter : NavStarter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContent {
NavigationExamplesTheme {
val navController = rememberNavController()
NavGraph(navController = navController, starterImpl = starter)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... composable
Мобильная версия