Ahoj, řeším tu teoretický problém ohledně komunikace mezi aktivitou a fragmentem. Jde mi o to, že potřebuju pracovat s datovým objektem jak v aktivitě, tak ve fragmentu (respektive více fragmentech). Jde mi o obousměrnou komunikaci, tedy přesněji řečeno úpravu dat toho předávaného objektu.
Všude na netu jsou dva oddělené postupy:
1. předání dat z aktivity do fragmentu, pomocí newInstance() fragmentu, parcelování daných dat a předání do nově vytvořené instance argumentem.
2. předání dat (lépe řečeno komunikace) z fragmentu do aktivity pomocí rozhraní, které implementuje aktivita, pak fragment volá metody této aktivity.
A teď, je mi poněkud proti srsti používat to parcelování objektu, jestli to dobře chápu, tak vlatně ve fragmentech pak dochází k vytvoření kopie dle předaných dat, tj. je to jiná instance datového objektu. Správnější mi přijde pracovat pouze s jednou instancí datového objektu, který by šel předat teoreticky v konstruktoru fragmentu, ale protože se doporučuje užití vzoru s tím newInstance(), tak bych to spíš viděl tak, že interface pro aktivitu bude mít metodu getEntityData(), kterou si fragment zavolá při vytvoření (třeba v onCreateView), tím získá odkaz na instanci objektu z aktivity. Do ní může přímo ukládat upravené data (a taky je načíst).
Tohle bude podle mě hezky fungovat v případě, že mám zobraz jen jeden fragment. V případě layoutu pro tablety, kde je zobrazeno více fragmentů najednou, by už došlo k nekonzistenci, ale to se dá vyřešit zavoláním nějaké refresh metody.
Když pominu tento problém, mohl by být ještě nějaký další? Nejde mi prostě do hlavy, proč se pracuje takhle krkolomně s kopiemi objektů (a všude je to takhle doporučováno) - je to přece i režie navíc, objekt se musí rozložit, poslat data fragmentu, tam vytvoři nový objekt z daných dat...