inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

냉동코더의 알기 쉬운 Modern Android Development 입문

ViewModelProvider.Factory 질문 있습니다!

541

지지지지지

작성한 질문수 4

0

안녕하세요. 코드를 따라 치다가 도저히 해결이 안되는 부분이 있어 가져왔습니다!

자꾸 아래와 같이 나타나길래 viewmodel 버전도 바꿔보고 따라해봤지만 자꾸 에러가 나네요...

위와 같이 에러가 납니다.

그리고 그냥 무시하고 앱을 실행시키면 아래와 같은 에러가 나고요.

Inheritance from an interface with '@JvmDefault' members is only allowed with -Xjvm-default option

혹시 몰라 Git 코드 놓겠습니다

https://github.com/Gseungmin/MVVMStudy

jetpack kotlin android architecture

답변 3

0

냉동코더

지승민님의 코드를 받아서 확인해봤습니다.

우선 빌드를 성공시키기 위해서는 app레벨의 build.gradle에서 android 블록 안에 다음과 같이 코드를 추가해주시면 lifecycle의 오류를 회피할 수 있습니다.

android {
    ...
    kotlinOptions{
        freeCompilerArgs += [
                "-Xjvm-default=all",
        ]
    }
}

그리고 빌드는 성공했는데 앱이 실행되지 않고 크래쉬나길래 확인해 본 결과 뷰모델을 인스턴스화하는 코드가 다음과 같이 되어있었습니다.

    private lateinit var viewModel: MainViewModel

        viewModel = ViewModelProvider(this).get(MainViewModel::class.java)

        val factory = ViewModelFactory(100)
        val viewModel = ViewModelProvider(this, factory).get(MainViewModel::class.java)

이 부분을 다음과 같이 수정하면 문제없이 실행되게 됩니다.

    private lateinit var viewModel: MainViewModel

        // viewModel = ViewModelProvider(this).get(MainViewModel::class.java)

        val factory = ViewModelFactory(100)
        viewModel = ViewModelProvider(this, factory).get(MainViewModel::class.java)

0

냉동코더

안드로이드 스튜디오의 메뉴에서 File > Invalidate Caches / Restart를 실행시켜서 기존의 캐시들을 모두 삭제하신 후 디펜던시를 다음과 같이 입력해보시겠어요?

dependencies {

    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1"

    implementation 'androidx.core:core-ktx:1.7.0'

    implementation 'androidx.appcompat:appcompat:1.4.1'

    implementation 'com.google.android.material:material:1.5.0'

    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'

    testImplementation 'junit:junit:4.13.2'

    androidTestImplementation 'androidx.test.ext:junit:1.1.3'

    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

}

0

지지지지지

image

0

지지지지지

이렇게 했는데도 해결이 되지 않네요... 혹시 좀 더 근원적인 방법이 없을까요???

0

냉동코더

다음 링크에서 언급된 에러인것 같네요. 사용하고 있는 Lifecycle 라이브러리의 버전이 2.5.0-alpha01 이상이면 발생하는 것 같습니다.

https://stackoverflow.com/a/70993001

지승민님은 "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1"을 사용하고 계시지만 'androidx.appcompat:appcompat:1.5.1'이 'Lifecycle 2.5.1'에 의존하고 있기 때문에 이런 오류가 발생한 것입니다. 제 build.gradle을 참조하셔서 모든 디펜던시의 버전을 동일하게 맞춰주시면 해결될 겁니다.

https://github.com/cliearl/book-search-app/blob/Practice02/app/build.gradle

0

지지지지지

똑같이 복붙을 해도 해결이 되지 않네요 ㅠㅠ

Coroutine, Flow 질문

0

401

1

Transformations import 안됨

0

588

1

moshi관련 질문입니다.

0

566

2

searchBooks() 에서 북 검색 입력을 너무 빨리 할 경우 마지막 글자로 검색이 안돼요.

0

375

1

안드로이드에서 아키텍처 패턴

0

423

1

RecyclerView.Adapter vs ListAdpater

0

473

1

Flows 와 Coroutine

1

573

1

[BookSearchAdapter] onBindViewHolder의 currentList[position] 질문

0

370

1

코루틴 메모리 관련해서 질문드립니다!

0

456

1

Java Bill Pugh Solution 에서 INSTANCE

0

469

1

nested json에서 특정 부분만 파싱하는법

0

495

1

Fragment에서의 viewBinding

0

525

3

toolbar 질문드립니다.

0

417

2

EditText 에서 delay 주셔서 처리하셨는데 flow 의 debounce() 하고 같은건가요?

2

568

1

코루틴 관련 질문

0

549

1

오류

1

494

2

강사님! 직렬화 라이브러리를 Moshi, kotlin serialization 두개를 사용하시던데 이유가 있으신가요?

1

749

1

EditText 는 kill 해도 값이 잘 저장되어있던데 혹시 제가 잘못테스트했을까요?

1

354

1

서버도 페이징 기능이 되는데 Paging 라이브러리가 필요할까요?

1

530

1

GSON 이 아닌 Moshi 를 사용하시는 이유가 있을까요?

1

1271

1

EditText 는 액티비티가 재생성되어도 값이 남아있던데 이유가 궁금해요

1

498

1

ViewModel 생성시 왜 초기값을 받지 않도록 했을까요?

1

438

1

Room DB에 id 항목 추가

0

255

1

안녕하세요. 용어에 대해 질문이 있어 글 남깁니다.

0

410

2