Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Type error on ViewModelProviders#of(Fragment)

I'm trying to go through the google tutorial on building good ap architecture. I'm using java 8 and SDK 26. Here is the code I have so far :

package test.me;

import android.app.Fragment;
import android.arch.lifecycle.ViewModel;
import android.arch.lifecycle.ViewModelProviders;
import android.os.Bundle;
import android.support.annotation.Nullable;

public class ChronoFragment extends Fragment {

    private ViewModel my_model;

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        my_model = ViewModelProviders.of(this).get(ViewModel.class);  // <-- error on this
        // and so on
    }
}

The trouble is that so far, the SDK returns the following error:

Cannot resolve the method 'of(test.me.ChronoFragment)'.

I don't understand this since

  • ChronoFragment is of type Fragment
  • The method ViewModelProviders#of(Fragment) does exist and is accessible via the sdk.

Any idea on what I'm doing wrong ?

like image 536
merours Avatar asked Jan 16 '18 22:01

merours


1 Answers

I have faced the same problem while using Android X libraries and used following to resolved.

Gradle dependencies for Android X:

implementation "androidx.lifecycle:lifecycle-extensions:2.1.0-alpha04"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.1.0-alpha04"`

Import:

import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModel;

Reference - https://developer.android.com/jetpack/androidx/migrate

like image 177
akki Avatar answered Oct 06 '22 18:10

akki