강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

신준희님의 프로필 이미지
신준희

작성한 질문수

rememberPagerState, HorizontalPager 문제

작성

·

48

0

@Composable
fun CalendarPager(
    viewModel: CalendarViewModel = viewModel(),
    events: List<CalendarEventData>,
    onDayClick: (LocalDate) -> Unit
) {
    val today = LocalDate.now()
    val pagerState = rememberPagerState(initialPage = 0)

    // 현재 페이지에 따른 월 계산
    val currentYearMonth by remember {
        derivedStateOf {
            YearMonth.now().plusMonths(pagerState.currentPage.toLong())
        }
    }

    // checkedDays를 LiveData로 반영
    val checkedDays by viewModel.checkedDays.observeAsState(emptySet())

    // 페이지 수 설정 (예: 12개월)
    val totalMonths = 12 // 예를 들어, 1년 동안의 페이지 수

    Column(modifier = Modifier.fillMaxSize()) {
        // 월과 연도 표시
        MonthYearHeader(
            currentYearMonth = currentYearMonth,
            onMonthChange = { /* Do nothing, controlled by Pager */ }
        )

        Spacer(modifier = Modifier.height(16.dp))

        // 슬라이드 가능한 페이지
        HorizontalPager(
            state = pagerState,
            modifier = Modifier.weight(1f),
            count = totalMonths 
        ) { page ->
            val yearMonth = YearMonth.now().plusMonths((page - pagerState.currentPage).toLong())
            DayGrid(
                yearMonth = yearMonth,
                today = today,
                checkedDays = checkedDays,
                events = events,
                onDayClick = { date -> onDayClick(date) },
                onDayDoubleClick = { date -> viewModel.toggleCheckedDate(date) }
            )
        }
    }
}

이 코드에서 rememberPagerState(initialPage = 0), count = totalMonths 부분에서 count랑 initialPage = 0

No value passed for parameter 'pageCount' 이런 문구가 뜨면서 오류가 나네요

implementation ("com.google.accompanist:accompanist-pager:0.30.1")
implementation ("com.google.accompanist:accompanist-pager-indicators:0.30.1")

이렇게 최신인데도 계속 뜨는데 어떻게 해결 해야 되나요..

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

신준희님께서 겪으신 문제는 rememberPagerState 함수에서 잘못된 사용으로 인한 것 같습니다. rememberPagerState 함수는 accompanist 라이브러리의 HorizontalPager와 함께 사용하는 경우, pageCount 인자를 별도로 지정하지 않는 대신, HorizontalPagercount 속성을 사용해야 합니다. 그런데 사용하신 버전 또는 API가 변경되었을 수 있으니, 먼저 이 부분을 확인하시고 문제가 있을 시 아래 예시처럼 코드 수정이 필요할 수 있습니다:

val pagerState = rememberPagerState()

HorizontalPager(
    count = totalMonths,
    state = pagerState,
    modifier = Modifier.weight(1f)
) { page ->
    // ...
}

위와 같이 rememberPagerState 초기화 시 pageCount를 넘기지 않고, HorizontalPagercount 속성으로 페이지 수를 지정하면 기본적으로 페이지 수에 맞게 상태가 업데이트됩니다.

또한, 사용 중인 accompanist-pager 버전에서 pageCount라는 매개변수가 제거되었을 가능성이 있으니, 동봉된 공식 문서에서 변경된 API 사항을 확인해보시는 것도 추천드립니다.

문제가 해결되지 않거나 추가적인 오류가 발생할 경우, 사용 중이신 컴포저블이나 라이브러리의 버전을 더 확인하시고, 가능하면 최신 버전을 유지해주세요.

도움이 되셨기를 바랍니다!

신준희님의 프로필 이미지
신준희

작성한 질문수

질문하기