简体   繁体   English

无法在ViewModelProviders中解析android.support.v4.app.FragmentActivity的方法

[英]Cannot resolve method of android.support.v4.app.FragmentActivity in ViewModelProviders

I am trying to implement architecture component in my application, but when I am to add lifecycleowner to my viewmodel inside my fragment with getActivity() its show message 我正在尝试在应用程序中实现体系结构组件,但是当我使用getActivity()在片段中的视图模型中添加生命周期getActivity()其显示消息

Cannot resolve method of android.support.v4.app.FragmentActivity 无法解析android.support.v4.app.FragmentActivity的方法

This is my code: 这是我的代码:

 viewModel = ViewModelProviders.of(getActivity()).get(MyViewModel.class);
        viewModel.setToken(token);
        viewModel.getRecent().observe(getActivity(), new Observer<List<Recent>>() {
            @Override
            public void onChanged(List<Recent> recent) {
                adapter.setData(recent);
            }
        });

My fragment is derived from android.support.v4.app.Fragment 我的片段来自android.support.v4.app.Fragment

and MyActivity is extends AppCompatActivity 和MyActivity扩展了AppCompatActivity

and this is my Gradle file: 这是我的Gradle文件:

    def paging_version = "2.1.0"
    def lifecycle_version = "2.0.0"
    def room_version = "2.1.0-alpha04"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
    implementation "androidx.paging:paging-runtime:$paging_version"
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"

How do I solve this problem? 我该如何解决这个问题? thanks in advance. 提前致谢。

Problem 问题

In androidx.lifecycle.ViewModelProviders.of(FragmentActivity) , they accept androidx.fragment.app.FragmentActivity , not android.support.v4.app.FragmentActivity . androidx.lifecycle.ViewModelProviders.of(FragmentActivity) ,他们接受androidx.fragment.app.FragmentActivity ,而不是android.support.v4.app.FragmentActivity

Solution

  1. Migrate entire project to AndroidX using Migrate to AndroidX which introduced from Android Studio 3.2. 使用从Android Studio 3.2引入的“ Migrate to AndroidX将整个项目Migrate to AndroidX You can found information in this page 您可以在此页面中找到信息
  2. Change dependencies version to support library version. 更改依赖项版本以支持库版本。 Dependencies version can be found this page 依赖版本可以在此页面找到
dependencies {
    def lifecycle_version = "1.1.1"

    // ViewModel and LiveData
    implementation "android.arch.lifecycle:extensions:$lifecycle_version"
    // alternatively - just ViewModel
    implementation "android.arch.lifecycle:viewmodel:$lifecycle_version" // For Kotlin use viewmodel-ktx
    // alternatively - just LiveData
    implementation "android.arch.lifecycle:livedata:$lifecycle_version"
    // alternatively - Lifecycles only (no ViewModel or LiveData).
    //     Support library depends on this lightweight import
    implementation "android.arch.lifecycle:runtime:$lifecycle_version"

    annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" // For Kotlin use kapt instead of annotationProcessor
    // alternately - if using Java8, use the following instead of compiler
    implementation "android.arch.lifecycle:common-java8:$lifecycle_version"

    // optional - ReactiveStreams support for LiveData
    implementation "android.arch.lifecycle:reactivestreams:$lifecycle_version"

    // optional - Test helpers for LiveData
    testImplementation "android.arch.core:core-testing:$lifecycle_version"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法将ContraceptiveFragment中的ContraceptiveFragment()应用于(android.support.v4.app.FragmentActivity) - ContraceptiveFragment( ) in ContraceptiveFragment cannot be applied to (android.support.v4.app.FragmentActivity) “TAG”在“android.support.v4.app.FragmentActivity”中有私有访问权限 - 'TAG' has private access in 'android.support.v4.app.FragmentActivity' “无法找到类'android.support.v4.app.FragmentActivity'”错误 - “Could not find class 'android.support.v4.app.FragmentActivity'” Error 将 android.support.v4.app.FragmentActivity$NonConfigurationInstances 转换为我的 AsyncTask 时出错 - Error casting android.support.v4.app.FragmentActivity$NonConfigurationInstances to my AsyncTask 尝试调用虚拟方法&#39;android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()&#39;android - Attempt to invoke virtual method 'android.content.Context android.support.v4.app.FragmentActivity.getApplicationContext()' android 无法解析方法show(android.support.v4.app FragmentManager,java.lang.string) - cannot resolve method show(android.support.v4.app FragmentManager,java.lang.string) 如何解决“无法解析方法&#39;show(android.support.v4.app.FragmentManager,java.lang.String)&#39;” - How to fix “Cannot resolve method 'show(android.support.v4.app.FragmentManager, java.lang.String)'” 无法解析方法“ show(android.support.v4.app.FragmentTransaction,java.lang.String)” - Cannot resolve method 'show(android.support.v4.app.FragmentTransaction, java.lang.String)' 无法解析方法'show(android.support.v4.app.FragmentManager,java.lang.String) - Cannot resolve method 'show(android.support.v4.app.FragmentManager, java.lang.String) android.support.v4.app.fragment和androidx.fragment.app.FragmentActivity有什么区别 - What is the difference between android.support.v4.app.fragment and androidx.fragment.app.FragmentActivity
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM