{
  "id": "android/viewmodel-factory-required",
  "signature": "java.lang.RuntimeException: Cannot create an instance of class com.example.MyViewModel. at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:221) ... Caused by: java.lang.InstantiationException: java.lang.Class<com.example.MyViewModel> has no zero argument constructor",
  "signature_zh": "java.lang.RuntimeException: 无法创建类 com.example.MyViewModel 的实例。位于 androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:221) ... 原因：java.lang.InstantiationException: java.lang.Class<com.example.MyViewModel> 没有零参数构造函数",
  "regex": "Cannot create an instance of class .*ViewModel.*: .*InstantiationException: .* has no zero argument constructor",
  "domain": "android",
  "category": "runtime_error",
  "subcategory": null,
  "root_cause": "ViewModelProvider.NewInstanceFactory is used but the ViewModel class has a parameterized constructor, requiring a custom ViewModelProvider.Factory or Hilt/AndroidViewModel.",
  "root_cause_type": "generic",
  "root_cause_zh": "使用了 ViewModelProvider.NewInstanceFactory，但 ViewModel 类具有参数化构造函数，需要自定义 ViewModelProvider.Factory 或 Hilt/AndroidViewModel。",
  "versions": [
    {
      "version": "Lifecycle 2.5 - 2.7",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "AndroidX Activity 1.7 - 1.8",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "",
      "why_fails": "The ViewModel may have null fields, causing NullPointerExceptions when accessed; it's a workaround but not a proper fix.",
      "fail_rate": 0.5,
      "condition": "",
      "sources": []
    },
    {
      "action": "",
      "why_fails": "The delegate uses NewInstanceFactory by default, which requires a no-arg constructor.",
      "fail_rate": 0.5,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Create a custom ViewModelProvider.Factory: 'class MyViewModelFactory(private val repository: Repository) : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>): T { return MyViewModel(repository) as T } }' and pass it to viewModels(): 'val viewModel: MyViewModel by viewModels { MyViewModelFactory(repository) }'",
      "success_rate": 0.95,
      "how": "Create a custom ViewModelProvider.Factory: 'class MyViewModelFactory(private val repository: Repository) : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>): T { return MyViewModel(repository) as T } }' and pass it to viewModels(): 'val viewModel: MyViewModel by viewModels { MyViewModelFactory(repository) }'",
      "condition": "",
      "sources": []
    },
    {
      "action": "Use AndroidViewModel if the ViewModel needs Application context: 'class MyViewModel(application: Application) : AndroidViewModel(application)' and use by viewModels() without factory.",
      "success_rate": 0.8,
      "how": "Use AndroidViewModel if the ViewModel needs Application context: 'class MyViewModel(application: Application) : AndroidViewModel(application)' and use by viewModels() without factory.",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "Create a custom ViewModelProvider.Factory: 'class MyViewModelFactory(private val repository: Repository) : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>): T { return MyViewModel(repository) as T } }' and pass it to viewModels(): 'val viewModel: MyViewModel by viewModels { MyViewModelFactory(repository) }'",
    "Use AndroidViewModel if the ViewModel needs Application context: 'class MyViewModel(application: Application) : AndroidViewModel(application)' and use by viewModels() without factory."
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://developer.android.com/topic/libraries/architecture/viewmodel/viewmodel-factories",
  "official_doc_section": null,
  "error_code": null,
  "verification_tier": "ai_generated",
  "confidence": 0.9,
  "fix_success_rate": 0.88,
  "resolvable": "true",
  "first_seen": "2023-04-10",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}