android studio shows a error.
i tried changing the viewmodel name and how its instantiated ie val myViewModel5 by viewModels<MyViewModel>()
<code> package com.example.myapplication
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.example.myapplication.ui.theme.MyApplicationTheme
class simpleViewModel: ViewModel(){
val abc=1;
}
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val myViewModel by viewModels<simpleViewModel>()
setContent {
MyApplicationTheme {
// A surface container using the 'background' color from the
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
app(ViewModelProvider(this).get(simpleViewModel::class.java))
}
}
}
}
}
@Composable
fun app(v:ViewModel) {
Text(v.abc)
}
</code>
<code> package com.example.myapplication
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.example.myapplication.ui.theme.MyApplicationTheme
class simpleViewModel: ViewModel(){
val abc=1;
}
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val myViewModel by viewModels<simpleViewModel>()
setContent {
MyApplicationTheme {
// A surface container using the 'background' color from the
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
app(ViewModelProvider(this).get(simpleViewModel::class.java))
}
}
}
}
}
@Composable
fun app(v:ViewModel) {
Text(v.abc)
}
</code>
package com.example.myapplication
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.example.myapplication.ui.theme.MyApplicationTheme
class simpleViewModel: ViewModel(){
val abc=1;
}
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val myViewModel by viewModels<simpleViewModel>()
setContent {
MyApplicationTheme {
// A surface container using the 'background' color from the
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
app(ViewModelProvider(this).get(simpleViewModel::class.java))
}
}
}
}
}
@Composable
fun app(v:ViewModel) {
Text(v.abc)
}
but dont matter what i do i cant use the member of the viewmodel. shoud i use a simgle functon for the whole app?