Wróciłam do kodu napisanego na początku projektu. Nie podoba mi się. Czy to oznacza, że zdążyłam się już czegoś nauczyć?
Przez cały ubiegły tydzień poprawiałam kod. Do struktury folderów dorzuciłam jeszcze jeden o nazwie „Dialogs” i wykrawam z Activities te co większe okienka dialogowe i tworzę z nich osobne klasy dziedziczące po DialogFragment. Zyskuję dzięki temu na przejrzystości kodu w Activity.
Kiedy ostatnim razem próbowałam korzystać z DialogFragment poległam na przekazywaniu zmiennych potrzebnych do identyfikacji obiektu, który edytuję. Tym razem udało mi się to zrobić za pomocą metody newInstance(), w której przekazuję wartości zmiennych, z których mogę później korzystać.
Na początek metoda, którą wywołuję żeby pokazać okienko dialogu:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void showNewDinnerDialog(Date date, Dinner dinner){ | |
DialogFragment newFragment = DinnerDialogFragment.newInstance(date.getTime(), dinner); | |
newFragment.show(getSupportFragmentManager(), "DinnerDialogFragment"); | |
} |
W metodzie newInstance() tworzę obiekt, który będzie przechowywał zmienne, incjalizuje je i zasilam nimi mój DialogFragment.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static DinnerDialogFragment newInstance(long date, Dinner dinner) { | |
DinnerDialogFragment f = new DinnerDialogFragment(); | |
Bundle args = new Bundle(); | |
args.putLong("date", date); | |
if (dinner != null) { | |
args.putLong("dinnerId", dinner.getId()); | |
args.putLong("mealId", dinner.getMeal().getId()); | |
args.putString("mealName", dinner.getMeal().getName()); | |
} | |
f.setArguments(args); | |
return f; | |
} |
i odczyt wartości:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mealNameTextView = (TextView) view.findViewById(R.id.meal_name_text); | |
mealNameTextView.setText(getArguments().getString("mealName", "")); |
Czyżby nadchodził czas na podsumowanie udziału w konkursie? może w następnym wpisie 🙂