Android Studio/compose 5

Android에 새롭게 등장한 Navigation3 알아보자

Google I/O 2025 의 What's new in Android 세션에서 Navigation3를 소개하고 있습니다. 세션을 보면서 Navigation3에 대해 호기심이 생겨서 공부하며 간단하게 글을 작성했습니다.현재 작성일 기준 Navigation3는 알파버전(1.0.0-alpha01)까지 출시되었습니다.실제로 Navigation3의 코드를 보면 좀 더 간략해지고, Compose와 좀 더 잘 맞는다는 것을 느낄 수 있습니다. 현재 navigation3는 알파버전이기 때문에 추후 코드가 변경될 수 있습니다. 변화기존 Jetpack Navigation2와는 어떤 차이점이 존재할까요? 그리고 어떤 부분이 보완되었을까요?Navigation2가 출시되었을 때에는 Activity 혹은 Fragment를 기..

[Android Compose] HorizontalPager사용해서 자동 swipe 화면 구현하기

여러 App을 사용하다보면, 광고 같은 경우 특정 시간이 지나면 다음 광고가 보이는 화면을 볼 수 있습니다. 이러한 경우에 Compose에서는 HorizontalPager를 사용하여 구현할 수 있습니다. @OptIn(ExperimentalPagerApi::class)@Composablefun MainScreen() { val pagerState = rememberPagerState(initialPage = 0) val imageSlider = listOf( painterResource(id = R.drawable.ic_launcher_background), painterResource(id = R.drawable.ic_launcher_background), ..

Compose with navigation (2) : arguments

이번 글에서는 compose의 navigation에서 화면을 이동할 때, arguments를 활용하여 데이터를 넘겨주는 기능에 대해 글을 작성해볼 예정입니다. 이번 글에서는 이전에 작성했던 'Compose with navigation (1) : 화면이동' 코드를 사용하여 진행하려 합니다. https://hugjune.tistory.com/55 Compose with navigation (1) Compose에서는 화면 이동을 어떻게 할까요? Compose에서는 navigation을 활용하여 화면을 이동할 수 있습니다. Compose의 navigation에서도 navigation Graph, navHost, navController가 사용되고 있습니다. navigation Graph hugjune.tisto..

Compose with navigation (1) : 화면 이동

Compose에서는 화면 이동을 어떻게 할까요? Compose에서는 navigation을 활용하여 화면을 이동할 수 있습니다. Compose의 navigation에서도 navigation Graph, navHost, navController가 사용되고 있습니다. navigation Graph : 간단히 말해서 목적지를 정의합니다. 또한 그것이 다른 화면과 어떠한 연관이 있는지 파악할 수 있습니다. navHost : navController를 보관합니다. navController : 화면 간 이동 및 백스텍 관리와 관련이 있습니다. 즉, navigation Graph를 다루는 기능을 가지고 있다고 생각하면 이해가 좀 더 쉬울 것 같습니다. 위의 3개의 navigation Graph, navHost, nav..

[Compose] java.lang.RuntimeException: Cannot create an instance of class ViewModel 에러 해결

Compose 코드를 작성하던 중 아래와 같은 장문의 에러를 마주하게 되었습니다..! 확인 결과 ViewModel 과 연관이 있다는 것을 확인했습니다. @Composable fun ComposeFunction( navController: NavController, viewModel: MainViewModel = viewModel() ) { ... } 이러한 방식으로 ViewModel을 주입해 주었는데, 여기서 문제가 발생했다는 것을 파악했습니다. 위의 방식으로 ViewModel 주입은 hilt를 사용하지 않는 경우에 사용하는 것이고, hilt를 사용하는 경우에는 @HiltViewModel 을 사용하는데, 이 경우에는 위와 같은 방식으로 코드를 작성하면 에러가 발생하게 됩니다. implementation ..