Fragmenty
389
jesteś tutaj
Aktywność DetailActivity musi przekazać
identyfikator do fragmentu WorkoutDetailFragment
Jak na razie fragment
WorkoutListFragment
przekazuje identyfikator
klikniętego treningu do aktywności
MainActivity
, która z kolei przekazuje
go dalej do aktywności
DetailActivity
. Musimy wprowadzić jeszcze jedną
zmianę: przekazać ten identyfikator z aktywności
DetailActivity
do fragmentu
WorkoutDetailFragment
.
Poniżej przedstawiliśmy zaktualizowany kod aktywności
DetailActivity
.
Zmodyfikuj swoją wersję pliku
DetailActivity.java, by była identyczna z naszą:
package com.hfad.trenazer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class DetailActivity extends AppCompatActivity {
public static final String EXTRA_WORKOUT_ID = “id”;
@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);
int workoutId = (int) getIntent().getExtras().get(EXTRA_WORKOUT_ID);
frag.setWorkout(workoutId);
}
}
app/src/main
DetailActivity.java
Trenazer
java
com.hfad.trenazer
Na dwóch następnych stronach sprawdzimy, co się dzieje podczas
działania naszej aplikacji.
Do przekazywania identyfikatora z aktywności MainActivity
do DetailActivity używamy stałej, aby uniknąć podawania
tej wartości na stałe w kodzie.
Już nie
podajemy
na stałe
identyfikatora
treningu
w kodzie,
dlatego ten
wiersz możesz
usunąć.
Pobieramy identyfikator
treningu i przekazujemy go do
fragmentu przy użyciu metody
setWorkout().
¨
Fragment WorkoutDetailFragment
¨
Fragment WorkoutListFragment
¨
Koordynacja fragmentów
390
Rozdział 9.
Co się dzieje?
¨
Fragment WorkoutDetailFragment
¨
Fragment WorkoutListFragment
¨
Koordynacja fragmentów
Co się dzieje po uruchomieniu aplikacji?
Oto krótki przegląd tego co się stanie po uruchomieniu aplikacji.
Zostaje utworzona aktywność MainActivity.
Fragment
WorkoutListFragment
zostaje dołączony do aktywności
MainActivity
,
po czym zostaje wywołana jego metoda
onAttach()
.
MainActivity
Urządzenie
onAttach()
WorkoutList
Fragment
Fragment WorkoutListFragment rejestruje aktywność MainActivity
jako obiekt nasłuchujący.
Kiedy użytkownik kliknie elementy listy we fragmencie WorkoutListFragment,
zostaje wywołana metoda onListItemClick() tego fragmentu.
Powoduje to wywołanie metody
itemClick()
aktywności
MainActivity
i przekazanie do niej identyfikatora klikniętego treningu, na przykład
1
.
Metoda itemClicked() aktywności MainActivity uruchamia aktywność DetailActivity,
przekazując do niej w intencji identykator klikniętego treningu.
WorkoutListFragment
MainActivity
Tak jest,
nasłuchuję…
WorkoutList
Fragment
MainActivity
itemClicked(1)
MainActivity DetailActivity
Intencja
id: 1
1
2
3
4
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.