Fragmenty
363
jesteś tutaj
package com.hfad.trenazer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class DetailActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
WorkoutDetailFragment frag = (WorkoutDetailFragment)
getSupportFragmentManager().findFragmentById(R.id.detail_frag);
frag.setWorkout(1);
}
}
Jak widać w powyższym przykładzie, referencję do fragmentu
pobieramy dopiero po wywołaniu metody
setContentView()
.
Pobranie referencji właśnie w tym miejscu jest bardzo ważne, gdyż
przed nim fragment jeszcze nie będzie istnieć.
Kolejnym zadaniem, które musimy wykonać, jest aktualizacja
widoków fragmentu w momencie jego wyświetlania. Jednak zanim
będziemy mogli to zrobić, musimy poznać i zrozumieć cykl życia
fragmentu, abyśmy mogli dodać nasz kod do odpowiedniej metody
we fragmencie.
app/src/main
DetailActivity.java
Trenazer
java
com.hfad.workout
To wywołanie zwraca referencję do
fragmentu WorkoutDetailFragment.
Identyfikatorem tego fragmentu,
określonym w pliku układu
aktywności, jest detail_frag.
Chcemy wyświetlić we fragmencie WorkoutDetailFragment
informacje o konkretnym treningu, by się przekonać,
czy nasz kod działa.
WorkoutDetailFragment frag = (WorkoutDetailFragment)
getSupportFragmentManager().findFragmentById(R.id.detail_frag);
Po pobraniu referencji do fragmentu będziemy mogli wywołać jego metodę
setWorkout()
,
aby określić trening, którego szczegóły chcemy wyświetlić. Jak na razie identyfikator
tego treningu określimy na stałe w kodzie, aby się prosto i szybko przekonać czy nasze
rozwiązanie działa prawidłowo. Nieco później zmienimy kod aplikacji w taki sposób,
by użytkownik mógł wybierać trening, który zostanie wyświetlony we fragmencie.
Poniżej przedstawiliśmy zmodyfikowaną wersję pliku
DetailActivity.java.
Zaktualizuj ten plik w swoim projekcie, tak by był identyczny z naszym:
Określenie identyfikatora treningu
w kodzie aktywności
¨
Fragment WorkoutDetailFragment
¨
Fragment WorkoutListFragment
¨
Koordynacja fragmentów
Aby pobrać referencję do fragmentu, musimy dodać do kodu aktywności poniższą instrukcję:
364
Rozdział 9.
Powtórka z aktywności
Przypomnienie stanów aktywności
Podobnie jak aktywności, fragmenty mają kilka kluczowych metod cyklu życia,
które są wywoływane w ściśle określonych momentach. Znajomość tych metod
oraz momentów, w których są one wywoływane, jest bardzo ważna, gdyż pozwoli
zapewnić, że tworzone fragmenty będą działały zgodnie z naszymi oczekiwaniami.
Fragmenty są umieszczane w aktywnościach i przez nie kontrolowane, dlatego
cykl życia fragmentów jest ściśle powiązany z cyklem życia aktywności. Poniżej
przedstawiliśmy przypomnienie wszystkich stanów aktywności, natomiast na
następnej stronie pokażemy, jaki jest ich związek z fragmentami.
Aktywność jest utworzona, kiedy zostanie
wykonana jej metoda onCteate().
Na tym etapie aktywność jest zainicjalizowana,
lecz jeszcze nie jest widoczna.
Aktywność
utworzona
Aktywność
uruchomiona
Aktywność
wznowiona
Aktywność
wstrzymana
Aktywność
zatrzymana
Aktywność
usunięta
Aktywność jest uruchomiona, kiedy
zostanie wykonana jej metoda onStart().
Aktywność jest widoczna, lecz nie dysponuje
miejscem wprowadzania.
Aktywność jest wznowiona, kiedy zostanie
wykonana jej metoda onResume().
Aktywność jest widoczna i dysponuje miejscem
wprowadzania.
Aktywność jest wstrzymana, kiedy zostanie
wykonana jej metoda onPause().
Aktywność wciąż jest widoczna, lecz nie
dysponuje już miejscem wprowadzania.
Aktywność jest zatrzymana, kiedy zostanie
wykonana jej metoda onStop().
Aktywność nie jest już widoczna, ale wciąż
istnieje.
Aktywność jest usunięta, kiedy zostanie
wykonana jej metoda onDestroy().
Po tym wywołaniu aktywność przestaje istnieć.
¨
Fragment WorkoutDetailFragment
¨
Fragment WorkoutListFragment
¨
Koordynacja fragmentów

Get Android Programowanie aplikacji. Rusz głową! Wydanie II now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.