• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

viewModel() 오류 추가질문입니다

23.10.14 10:17 작성 조회수 347

0

dependencies {

    implementation("androidx.core:core-ktx:1.9.0")
    implementation("androidx.lifecycle:lifecycle-viewmodel-compose-ktx:2.6.2")
    implementation("androidx.lifecycle:lifecycle-runtime-compose:2.6.2")
    implementation("androidx.activity:activity-compose:1.8.0")
    implementation(platform("androidx.compose:compose-bom:2023.03.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.ui:ui-graphics")
    implementation("androidx.compose.ui:ui-tooling-preview")
    implementation("androidx.compose.material3:material3")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
    androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00"))
    androidTestImplementation("androidx.compose.ui:ui-test-junit4")
    debugImplementation("androidx.compose.ui:ui-tooling")
    debugImplementation("androidx.compose.ui:ui-test-manifest")
}

위와 같이 build.gradle.kts 파일내용을 변경한 후

아래아 같이 코드를 작성하면 34번줄 viewModel() 에서 오류가 발생합니다

q1.png

또 viewModel() 에서 Alt+Enter 키를 누르면 아래처럼

여러개의 항목을 선택하는 창이 뜨는데 이중 어느것을 선택해야 하는지 ...

q2.png

답변 2

·

답변을 작성해보세요.

0

shafeel2님의 프로필

shafeel2

질문자

2023.10.19

lifecycle_version 이 2.5.1 이면 오류가 사라지나

2.6.2 로 하였을때는

import androidx.lifecycle.viewmodel.compose.viewModel

가 되지 않았습니다

그래서 build.gradle 파일내용을 아래와 같이 수정하여 실행하니 오류가 사라졌습니다

dependencies {
    val lifecycle_version = "2.5.1"
    val arch_version = "2.1.0"

    // ViewModel
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version")
    // ViewModel utilities for Compose
    implementation("androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version")
    // LiveData
    implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version")
    // Lifecycles only (without ViewModel or LiveData)
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version")

    // Saved state module for ViewModel
    implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version")

    // alternately - if using Java8, use the following instead of lifecycle-compiler
    implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycle_version")

    // optional - helpers for implementing LifecycleOwner in a Service
    implementation("androidx.lifecycle:lifecycle-service:$lifecycle_version")

    // optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
    implementation("androidx.lifecycle:lifecycle-process:$lifecycle_version")

    // optional - ReactiveStreams support for LiveData
    implementation("androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version")

    // optional - Test helpers for LiveData
    testImplementation("androidx.arch.core:core-testing:$arch_version")

    // optional - Test helpers for Lifecycle runtime
    testImplementation ("androidx.lifecycle:lifecycle-runtime-testing:$lifecycle_version")

.....

 

수고많으신 강사님

늘 건강하시고 부자되세요

 

0

shafeel2님의 프로필

shafeel2

질문자

2023.10.14

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            HomeScreen()
        }
    }
}

@Composable
fun HomeScreen(viewModel : MainViewModel = viewModel()) {
    Column() {
        Text("Hello World")
        Button(onClick = {  }) {
            Text("Click !")
        }
    }
}

class MainViewModel: ViewModel() {
    private val _value = mutableStateOf("Hello World")
    val value: State<String> = _value
}

보내주신 코드를 그대로 붙여서 해 보니 정말로 Alt + Enter 눌렀을 때 import 옵션이 안 나오는 현상을 발견했습니다!! 버그 인 것 같습니다.

수동으로 import 를 추가해 주시면 될 것 같습니다.

import androidx.lifecycle.viewmodel.compose.viewModel

버그 때문에 고생하셨습니다.