gradle
dependencies {
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.4.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha07"
implementation "androidx.compose.ui:ui:1.1.0-beta01"
implementation "androidx.compose.material:material:1.1.0-beta01"
}
import androidx.lifecycle.ViewModel
class MyViewModel : ViewModel() {
lateinit var data: String
fun fetchData() {
data = "Hello, World!"
}
}
kotlin
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.layout.Column
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.livedata.observeAsState
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewmodel.compose.viewModel
class MainActivity : AppCompatActivity() {
private val viewModel: MyViewModel by viewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyScreen(viewModel)
}
}
}
@Composable
fun MyScreen(viewModel: MyViewModel) {
val data = viewModel.data.observeAsState()
Column {
Text(text = data.value ?: "Loading...")
Button(onClick = { viewModel.fetchData() }) {
Text(text = "Fetch Data")
}
}
}