0

Here is my build.gradle

dependencies {

//viewmodel
def lifecycle_version = "2.2.0"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1"
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
//noinspection GradleDependency
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"

implementation 'androidx.activity:activity-ktx:1.4.0'
implementation 'androidx.fragment:fragment-ktx:1.4.1'

}

viewModel

class AlarmViewModel(application: Application) : AndroidViewModel(application) {

private var repository : AlarmRepository = AlarmRepository(application)
var list : LiveData<List<Alarm>> = repository.list

}

Fragment

class AlarmListFragment : Fragment() {

private lateinit var viewModel: AlarmViewModel

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View {
    binding = FragmentAlarmListBinding.inflate(inflater, container, false)
    return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    viewModel = ViewModelProvider(requireActivity(), ViewModelProvider.AndroidViewModelFactory.getInstance(activity!!.application)).get(AlarmViewModel::class.java)
    }
}

}

Searching on google and trying to fix but it doesn't work plz help me :< I need ur helpe!!!

luullu
  • 1
  • 2
  • There is similar code to yours: https://stackoverflow.com/questions/54489933/in-kotlin-how-to-use-viewmodel-with-viewmodelprovider-androidviewmodelfactory. Also, please, set breakpoints inside `AlarmViewModel` and debug to make sure it doesn't throw exception. – CoolMind Apr 22 '22 at 06:54
  • thank u but same not working T_T........ – luullu Apr 22 '22 at 07:07
  • can you post your errors? – sasikumar Apr 22 '22 at 07:12
  • error message is java.lang.RuntimeException: Cannot create an instance of class com.jisoo.alarmtutorialproject.viewmodel.AlarmViewModel at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.kt:236) at com.jisoo.alarmtutorialproject.AlarmListFragment.onViewCreated(AlarmListFragment.kt:40) at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3019) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:551) at ........................ – luullu Apr 22 '22 at 07:16
  • java.lang.RuntimeException: Cannot create an instance of class com.jisoo.alarmtutorialproject.viewmodel.AlarmViewModel at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.kt:236) – luullu Apr 22 '22 at 07:18
  • The same error occurs when I import any code written in the answer. – luullu Apr 22 '22 at 07:19
  • 1
    refer https://stackoverflow.com/questions/65523837/cannot-create-an-instance-of-class-viewmodel-class – sasikumar Apr 22 '22 at 07:29
  • As pointed by @sasikumar in the shared answer, you need to create a view model Factory to provide application instance to your view model – Hamza Mehboob Apr 22 '22 at 07:41
  • Shouldn't I use androidviewmodelfactory instead of custom factory? – luullu Apr 22 '22 at 08:14

0 Answers0