Hej, próbuję uruchomić mój ViewModel, ale na razie nie mam szczęścia. Android Studio wyświetla błąd Cannot resolve symbol 'ViewModelProviders'
.
Każde inne pytanie znalazłem na ten temat została sprostowanie extends Activity
do extends AppCompatActivity
, ale ja rozszerzenie właściwy. Nie wiem, czego mi brakuje ...
Mój kod jest oparty na tym filmie YouTube
MainActivity.java
public class MainActivity extends AppCompatActivity implements
TileAdapter.TileAdapterOnClickHandler {
private BaseViewModel viewModel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//set Toolbar
Toolbar myToolbar = findViewById(R.id.toolbar);
setSupportActionBar(myToolbar);
//initialize viewModel
viewModel = ViewModelProviders.of(this).get(BaseViewModel.class);
BaseViewModel.java
public class BaseViewModel extends ViewModel {
private Movie[] mMovie;
public void init (Movie[] movies){
this.mMovie = movies;
}
public Movie[] getMovie() {
return mMovie;
}
import
instrukcji, albo masz, ale nie masz zależności w konfiguracji Gradle.ViewModel
w innym pakiecie i importuje ją stamtądOdpowiedzi:
W mojej kompilacji nie miałem obu zależności, stąd problem.
Dzięki @Muthukrishnan Rajendran
źródło
Jeśli używasz
androidx
, potrzebujesz tego:źródło
Jeśli używasz skompilowanego sdk w wersji 28 lub nowszej, wystarczy dodać tylko jedną zależność, aby pobrać
ViewModel
iLiveData
źródło
android.arch.lifecycle:extensions
można szukaćextensions
w maven.google.com/web/index.html i zobaczyć najnowszą wersjęUtwórz instancję viewmodel w następujący sposób:
źródło
powinieneś dodać bibliotekę do pliku build.gradle twojego projektu
def lifecycle_version = "2.0.0"
źródło
Rozwiązuję ten problem z oficjalnej dokumentacji Androida . Dodaj poniżej do
build.grale
źródło
W moim przypadku (Android Studio 3.6.3),
AppCompatActivity
aby pomyślnie wykonać:potrzebne są zarówno:
(sam z
lifecycle-extentions
nie był wystarczający)źródło
W pliku build.gradle dodaj te wiersze w bloku zależności
źródło
Korzystaj z
androix
bibliotekZmiana
implementation 'com.android.support:appcompat-v7:28.0.0'
do
implementation 'androidx.appcompat:appcompat:1.1.0-alpha03'
Możesz użyć
źródło
W implementacji „androidx.lifecycle: lifecycle-extensions: 2.2.0” i nowsze wersje ViewModelProviders są przestarzałe, użyj
lub w Kotlinie
zamiast
źródło
- „ ViewModelProviders ” jest obecnie przestarzałe
viewModel = ViewModelProvider(this).get(BaseViewModel.class);
var viewModel = ViewModelProvider(this).get(BaseViewModel::class.java)
Odniesienia - https://developer.android.com/reference/androidx/lifecycle/ViewModelProviders
źródło
Wcześniej działa dobrze w mojej aplikacji (java)
zmiany w
mam nadzieję, że to pomoże
źródło
W moim przypadku mam do czynienia z poniższym problemem tj .:
Dodałem poniżej zależności w moim projekcie build.gradle .
Następnie tworzę swoją klasę w projekcie modułu i mam do czynienia z tym problemem, następnie dodaję te biblioteki w pliku module build.gradle i problem został rozwiązany.
źródło
Miałem ten sam problem. Żadne inne rozwiązanie mi nie pomogło.
Zdałem sobie sprawę, że używam
import androidx.lifecycle.ViewModelProvider;
zamiastimport androidx.lifecycle.ViewModelProviders;
.Więc upewnij się, że używasz
import androidx.lifecycle.ViewModelProviders;
. To jestViewModelProviders
zs
.źródło