Я знаю о "newInstance" -Pattern (Лучшая практика для создания нового фрагмента Android). Но как я могу обновить эти аргументы фрагмента, например, если другой фрагмент изменяет данные?
Я знаю о методах обратного вызова между Fragments/Activitys, но эти обратные вызовы не будут обновлять аргументы?!
Например: при создании фрагмента я передаю ему URI с пакетом. Затем другой фрагмент изменяет этот URI посредством обратного вызова метода changeUri (Uri uri) для первого фрагмента. Если после этого фрагмент будет восстановлен (например, из-за поворота экрана), он будет использовать первый URI из набора аргументов вместо более позднего обновленного uri, правильно?
Какова наилучшая практика для решения этой проблемы? Должен ли я вручную хранить его в файле savedInstanceState и при использовании решить, использовать ли instanceState или arguments-bundle?
Я ищу стандартный способ обработки аргументов моих фрагментов, поэтому я думаю, что собираюсь использовать такой подход (псевдокод):
private Uri arg1;
public static Fragment newInstance(Uri arg1) {
create bundle
create fragment instance
set bundle to fragment
return fragment
}
private void onCreate(Bundle savedInstance) {
if(savedInstance != null) {
arg1 = savedInstance.uri
}
}
private Uri getUri() {
if(arg1 == null) {
arg1 = getArguments.uri
}
if(arg1 == null) {
arg1 = defaultValue
}
}
Итак, у меня есть простой способ доступа к моему аргументу. И не нужно использовать if-else-hassle, каждый раз, когда мне нужен этот аргумент.
Что вы думаете об этом?