Kod pozyskiwania Fragmentow Android [ Newbie ]

0

Witam
Kod poniżej jest całkowicie przepisany z książki której się uczę ( Rusz głowa Android strona 281 ) problem polega na tym ze u mnie IDE ANDROID STUDIO informuje mnie ze nie mogę tego rzutować . WorkOutDetails to klasa rozszerzająca Fragment . Według książki miałem w ten sposób dostać dostęp do fragmentu w kodzie MainActivity.Jak w takim wypadku mam to zrobić lub co jest tu źle? W załączniku dodałem cały projekt aplikacji na ta chwile. Z góry dzięki za pomoc. Szczęśliwego Nowego Roku :)

WorkOutDetails details = (WorkOutDetails) getFragmentManager().findFragmentById(R.id.OpisFrag);
0

A nie lepiej po prostu zrobić transakcję i podmienić ten fragment za jakiś FrameLayout albo podobny?

1

W Androidzie istnieją dwa rodzaje fragmentów. Natywne i z bibiloteki support. Korzystając z metody getFragmentManager() odwołujesz się do android.app.FragmentManager. Obiekt tego typu jest w stanie pracować tylko z fragmentami wbudowanymi bezpośredno we framework Androida. Możesz rozwiązać to na dwa sposoby.

  1. Zmień WorkOutDetails.java tak, żeby rozszerzał android.app.Fragment zamiast android.support.v4.app.Fragment.
  2. Zamiast getFragmentManager() użyj getSupportFragmentManager(), który operuje na fragmentach z biblioteki com.android.support:support-fragment (dodajesz ją pośrednio do swojego projektu poprzez importowanie com.android.support:appcompat-v7).

Drugie rozwiązanie jest zdecydowanie lepsze. Dzisiaj aplikacji praktycznie się nie rozwija bez appcompat-v7, więc nie ma sensu używanie natywnych fragmentów.

0

@Nadziany Karp Bardzo ci dziękuje wszystko się zgadza nie zwróciłem uwagi na to co importowało mi IDE a co jest importowane w książce. Po zmianie biblioteki to działa, swoja droga szukałem rozwiązania na developer.android.com i widziałem tam ta druga metodę getSupportFragmentMenager(); właśnie chciałem jej użyć. Jeszcze raz bardzo dziękuję teraz mogę brnąc dalej w głąb tej książki :)

0

Chyba Google w końcu postanowił uporządkować ten syf, lepiej późno niż wcale: https://developer.android.com/topic/libraries/architecture/index.html
W żadnej książce tego nie ma, ale tutaj przykładowy tutorial: https://proandroiddev.com/mvvm-architecture-viewmodel-and-livedata-part-1-604f50cda1

Takie zarządzanie fragmentami i oknami, jakie jest domyślnie teraz przy tworzeniu nowego projektu to generalnie syf i antypattern, no ale cóż.

0

Google zamiast wdrożyć Golang na Androidzie, to wybrało ponownie Kotlin i JVM.

1 użytkowników online, w tym zalogowanych: 0, gości: 1