• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Metoda `onCreate` we Fragmencie.

Object Storage Arubacloud
0 głosów
284 wizyt
pytanie zadane 4 października 2017 w Android, Swift, Symbian przez Kubs Mądrala (5,190 p.)
edycja 4 października 2017 przez Kubs

Witajcie,

czytam o cyklu życia Fragmentu gdzie opisane są kolejne etapy jego życia. I tak ..... onCreate()....onCreateView()...onActivityCreated()....itd.

Patrzę teraz na ostatnie trzy metody z Fragmentu i zastanawiam się jak wykonuje się kolejno ten kod, (co po czym następuje) skoro tu we Fragmencie metoda onCreate() jest ZA metodą onCreateView() i onActivityCreated(). Myślałem, że kod wykonuje się z góry do dołu. Jednak w tym przypadku metoda onCreate() jest na końcu klasy Fragment i ZA tymi dwoma metodami a nie PRZED, to już teraz nie wiem co po czym się wykonuje.

public class Fragment1 extends Fragment {

    public  Fragment1(){}

    String stringValue;

   
    public  static Fragment1 newInstance(String str)
    {
        Fragment1 slider=new Fragment1();
        Bundle b=new Bundle();
        b.putString("stringValue", str);
        slider.setArguments(b);
        return slider;
    }


    TextView textView;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment1, container, false);
        textView = (TextView) view.findViewById(R.id.textView);
        return view;
    }

        @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        stringValue = getArguments().getString("stringValue");
        textView.setText(stringValue);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }
}

 

2 odpowiedzi

+1 głos
odpowiedź 4 października 2017 przez miro Pasjonat (23,870 p.)
wybrane 6 października 2017 przez Kubs
 
Najlepsza

W metodzie instrukcje zazwyczaj wykonują się od góry do dołu. Metody to takie polecenia, które ktoś musi je wywołać, więc mogą być napisane w dowolnej kolejności (przynajmniej w javie). 
Masz rację metoda onCreate wywoła się pierwsza. Tutaj masz szczegółowy opis co następuje po czym w fragmencie:
android-lifecycle

komentarz 4 października 2017 przez Kubs Mądrala (5,190 p.)
Dziękuje Miro,

czyli układ metod we Fragmencie nie jest ważny, bo i tak w odpowiedniej kolejności zostaną wywołane, tak?

Nie rozumiem jeszcze jak Fragment działa w relacji za Aktywnością. To i to ma swój cykl życia. Jak te cykle życia działają wspólnie razem? Np. metoda onAttach(), której nie mam w powyższym kodzie we Fragmencie. Pomimo to jest ona jakoś wywoływana skoro Fragment jest kojarzony z aktywnością. Gdzie i kiedy się to dzieje?
komentarz 4 października 2017 przez miro Pasjonat (23,870 p.)

czyli układ metod we Fragmencie nie jest ważny, bo i tak w odpowiedniej kolejności zostaną wywołane, tak?

Tak.

Zobacz ten filmik. Ja bym gorzej to opisał jak wywołują się te metody, niż tam jest to pokazane.

komentarz 5 października 2017 przez Kubs Mądrala (5,190 p.)
Super. Czyli jeśli chcemy dokonać jakichkolwiek zmian w tych metodach po prostu umieszczamy  ją w naszym kodzie i w ciele tej metody dokonujemy zmian.

Więc tutaj metoda onCreate(), która nie ma w sobie żadnego dodanego przez programistę kodu, może być usunięta z tego kodu i aplikacja też zadziała.

Czy tak to właśnie wygląda, Miro?
komentarz 5 października 2017 przez miro Pasjonat (23,870 p.)
Tak właśnie. Zobacz że te metody mają notację  @Override, czyli ty w swoim kodzie nadpisujesz metodę która jest w klasie rodzica.
komentarz 6 października 2017 przez Kubs Mądrala (5,190 p.)
Super. Jak zwykle wspaniale przez Ciebie wyjaśniony temat. Dopytam tylko - jaka klasa jest klasą rodzić dla `Fragmentu`?
komentarz 6 października 2017 przez miro Pasjonat (23,870 p.)

Takie rzeczy to sprawdzaj naciskając ctr i klikając na nazwę klasy lub w dokumentacji
Fragment implements ComponentCallbacks2View.OnCreateContextMenuListener

komentarz 6 października 2017 przez Kubs Mądrala (5,190 p.)
Bardzo dziękuje Miro! :)
+1 głos
odpowiedź 4 października 2017 przez KubenQPL Maniak (62,820 p.)
Bo to nie miejsce metody jest ważne tylko miejsce gdzie jest wywoływana.
komentarz 4 października 2017 przez Kubs Mądrala (5,190 p.)
Rozumiem. Dziękuje serdecznie Kuben :)
komentarz 5 października 2017 przez Kubs Mądrala (5,190 p.)

Jeszcze jedno pytanie Kuben, jeśli pozwolisz (nie chce nadwyrężąć 'miro' tak bardzo) :)

Dlaczego w logCat wyświetla mi się taki etap wyłowywania metod? Dwa razy `onCreateFragment` oraz powtórzenie `onCreateViewFragment` i `onActivityCreatedFragment`?

Natomiast nie pokazuje się w ogóle `onCreateActivity` mimo, że umieściłem `Log.i...` w metodzie `onCreate` w MainActivity?

I/x: onCreateFragment
I/x: onCreateFragment
 I/x: onCreateViewFragment
 I/x: onActivityCreatedFragment
 I/x: onCreateViewFragment
 I/x: onActivityCreatedFragment

 

Podobne pytania

0 głosów
0 odpowiedzi 55 wizyt
pytanie zadane 7 listopada 2020 w Java przez amtrax Dyskutant (9,630 p.)
0 głosów
0 odpowiedzi 130 wizyt
pytanie zadane 6 grudnia 2017 w Android, Swift, Symbian przez Kubs Mądrala (5,190 p.)
0 głosów
0 odpowiedzi 146 wizyt
pytanie zadane 11 października 2017 w Android, Swift, Symbian przez Kubs Mądrala (5,190 p.)

92,565 zapytań

141,417 odpowiedzi

319,602 komentarzy

61,950 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...