Referencja do nowej aktywności w starej aktywności.

1

W jaki sposób mogę dostać referencję do nowej aktywności uruchamianej w starej akrtywności w androidzie.

Intent intent = new Intent(this, Game.class);
       this.startActivity(intent);

uruchamianie jest takie i chce tutaj gdzieś dostać wskaźnik na nową aktywność która się uruchomi

0

To nie jest najlepszy pomysł, żeby Activities miały referencje do siebie nawzajem. Co konkretnie chcesz osiągnąć?

0

Elementy działania aktywności zmieniać ze względu na zadane parametry, jednen typ aktywności chce używać wiele razy tylko w trochę inny sposób, zgodnie ze wzorcem strategia.

1

Do Intentu odpalającego drugą aktywność przekaż parametry, które potem w tej drugiej sobie odczytasz. Tu prosty przykład: https://zocada.com/using-intents-extras-pass-data-activities-android-beginners-guide

Próba "nawiązania kontaktu" z innym Activity bezpośrednio jest złym podejściem. Cyklem życia aktywności zarządza system (no, nie bezpośrednio, ale na potrzeby tłumaczenia można tak na to spojrzeć). Każda może zostać ubita czy zreinstancjonowana na nowo - zastąpiona "sobowtórem", co oczywiście zdezaktualizowałoby twoją referencję. Próby wcinania się w te mechanizmy są proszeniem się o kłopoty; nieprzypadkowo SDK nie daje ci takiej możliwości do ręki. Dlatego trzeba korzystać z "oficjalnych" abstrakcji do komunikacji i wymiany danych między aktywnościami - patrz powyższy link.

0

No rozumiem rozumiem, extraxy wydają mi się trochę dziwne, więc zrobiłem to poprzez singleton, nie powinno być wtedy problemu z reinstalacją. Dzięki za podpowiedź szczególnie z tym zastąpieniem sobowtórem bo o tym nie pomyślałem.

1

To też nie jest specjalnie dobrym podejściem. Na przykład jeśli system ubije apkę, singleton zniknie, ale po powrocie apka zostanie zrestartowana od tej drugiej aktywności (jeżeli to na niej użytkownik był ostatnio), a nie tej pierwszej, która ustawiała stan singletona. A więc teraz już ta druga aktywność nijak "nie dowie się", jakie miała wcześniej parametry. Może to nawet doprowadzić do crasha, jeśli nie przewidziałeś takiej sytuacji i spróbujesz w ciemno odczytać jakieś dane z singletona, nie biorąc pod uwagę, że jego stan został w międzyczasie zresetowany i np. masz nulle.

Singletony są też niezalecane z powodów ogólnych, vide link podany przez @MarekR22. Między innymi zaciemniają one obraz powiązań między różnymi komponentami aplikacji (znany problem event busów). Widziałeś kiedyś na filmach wojennych czy szpiegowskich, jak uczestnicy konspiracji przekazują sobie grypsy czy mikrofilmy, wtykając je w umówione miejsce, a potem przychodzi ten drugi i wyciąga karteluszek spod ławki w kościele? Odpowiednikiem tego jest singleton. Jedna aktywność dyskretnie zostawia coś drugiej "w umówionym miejscu". W projekcie o rozmiarach przekraczających trywialne może to doprowadzić do tego, że zrozumienie, jak w aplikacji wygląda zarządzanie stanem, przepływ kontroli itd. stanie się bardzo trudne. Sami sobie stworzyliśmy siatkę konspiratorów do rozgryzienia :)

0

Parsowanie do jsona i putExtras jest ok, czy do pliku czy musze tworzyć pięć różnych aktywności różniących się tylko parametrami, które podejście jest najlepsze, i czy którekowliek jest dobre?

0

Tak jak napisałem, powinno się przekazywać przez Intent, a nie robić pięć różnych aktywności.

Na resztę pytań trudno odpowiedzieć, nie znając kontekstu. Serializacja do jsona będzie pewnie wolniejsza, niż użycie po prostu Serializable czy Parcelable. Patrz https://stackoverflow.com/questions/2736389/how-to-pass-an-object-from-one-activity-to-another-on-android

Zapis w systemie plikowym to jeszcze większe obciążenie.

Jeśli dane są naprawdę duże, nikt przecież nie powiedział, że Intent musi zawierać obiekt w całej okazałości. Równie dobrze może to być tylko klucz, pod którym ten obiekt jest dostępny w jakimś repozytorium czy cache'u.

0

Mógłbyś rozwinąć to przechowywanie w repozytorium albo cache'u? Mam grupę obiektów (Heroes) które będą używane w nowej akcji, w zależności od tego jaki tryb użytkownik wybierze będą wrzucane do nowej akcji inni bohaterowie.

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