Android Fragments e onClick

novembre 30, 2012
By

Belli i fragment, però più li uso e più mi danno l’impressione di essere stati implementati un po’ mentula canis 

In particolare mi sono scontrato col problema che se si lega un listener per il click via xml in un fragment, il bind viene fatto in realtà con l’activity, rendendo il fragment quasi inutile di per sé

Le alternative sono due: fare il bind dell’onClickListener programmaticamente per ogni elemento nell’onCreateView oppure create il metodo necessario nell’activity e proxarlo al fragment.

Mi rendo conto che può sembrare scomodo, ma io ho optato per la seconda opzione, che mi sembra più mantenibile ed elegante

Nella fattispecie dato che l’azione nel mio caso parte da una ActionBar ho creato una interfaccia comune per i fragment che crea i metodi di callback

Alla creazione dei tab nell’actionBar (nel create della Activity principale) ho associato un tag ad ogni Tab, che ho fatto corrispondere al tag del fragment principale

Al trigger del callback su clik nella Activity il metodo controlla quale sia il tab attivo, ne ricava il tag e usando quello recupera il fragment attivo usando il tag e facendone un cast a ICustomFragmentCallback

A quel punto richiamo lo stesso metodo (implementato grazie all’interfaccia) nel fragment passando la view in firma e facendo a quel punto tutto quello che è necessario fare

Mi rendo conto che è un po’ un accrocchio, ma stipare tutta la logica nella Activity mi pare peggio e fare bind dei Listener programmaticamente è una cosa che sinceramente odio, anche se in questo caso potrebbe essere una soluzione valida.

Certo che se quelli di Google sta cosa l’avessero creata meglio  non ci sarebbe stato sto problema

Tags: , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


*