Android 根据viewModels,由于接收器类型不匹配,以下候选项均不适用
我已经尝试了我能找到的每一个咒语,但在使用by viewModel时仍然存在问题 以下是相关代码:Android 根据viewModels,由于接收器类型不匹配,以下候选项均不适用,android,kotlin,android-viewmodel,Android,Kotlin,Android Viewmodel,我已经尝试了我能找到的每一个咒语,但在使用by viewModel时仍然存在问题 以下是相关代码: class MainActivity: FlutterActivity(), OnSneakerClickListener, OnSneakerDismissListener { private val httpclient = OkHttpClient() val stripe = Stripe(this, "pk_test_yadayadayada") private va
class MainActivity: FlutterActivity(), OnSneakerClickListener, OnSneakerDismissListener {
private val httpclient = OkHttpClient()
val stripe = Stripe(this, "pk_test_yadayadayada")
private val viewModel: StripeIntentViewModel by viewModels() //<--dragons be here
缺少什么吗?是上的一个扩展,它提供了对ViewModels的支持(通过ViewModelStoreOwner
界面)
Activity
,根据its,仅扩展android.app.Activity
,不扩展ComponentActivity
。因此,无法从活动中使用by viewModels()
您可以改为使用,它扩展了FragmentActivity
(它本身扩展了ComponentActivity
),如下所示。谢谢!我怀疑这可能与弗利特有关。我求助于“老办法”做:private val model:StripeIntentViewModel=ViewModelProvider(instance).get(StripeIntentViewModel::class.java),但可能会转换成这个。
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'checkstyle'
id 'org.jetbrains.kotlin.plugin.parcelize'
}
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
...
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$androidLifecycleVersion"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$androidLifecycleVersion"
implementation "com.google.android.material:material:$materialVersion"
implementation "androidx.fragment:fragment-ktx:$fragmentVersion"
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation "androidx.activity:activity-ktx:1.1.0"
implementation "androidx.fragment:fragment-ktx:1.2.5"
implementation "android.arch.lifecycle:extensions:1.1.1"
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.activity:activity-ktx:1.2.0-rc01"