Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Fragments en Android & algo de responsive design (GDG DevFest 2013)

Fragments en Android & algo de responsive design (GDG DevFest 2013)

Charla acerca de Fragments en Android & algo de responsive design para el GDG DevFest 2013
Código: https://github.com/eveliotc/fragments
Video: Comienza en 1h21m40s https://www.youtube.com/watch?v=RiiIMkUGNuk&t=1h21m40s

Evelio Tarazona Cáceres

August 24, 2013
Tweet

More Decks by Evelio Tarazona Cáceres

Other Decks in Programming

Transcript

  1. Evelio Tarazona Cáceres Lead Android Software Engineer - Telly, Inc.

    GDG DevFest - 08/24/2013 Fragments en Android & algo de responsive design evel.io/fragments
  2. Agenda Introducción Cómo usarlos Extras & Gotchas · ¿Que son?

    ¿Por qué? Lifecycle FragmentManager bla bla bla - - - - - · En layout En código Tipos - - - · /
  3. FragmentManager b e g i n T r a n

    s a c t i o n ( ) f i n d F r a g m e n t B y I d ( ) f i n d F r a g m e n t B y T a g ( ) · · · textbookstop.wordpress.com/2010/11/04/speculation-about-michael-scotts-replacement-on-the-office/
  4. FragmentTransaction c o m m i t ( ) c

    o m m i t A l l o w i n g S t a t e L o s s ( ) Operaciones sobre fragments · · · a d d r e m o v e h i d e s h o w r e p l a c e - - - - - www.tumblr.com/tagged/drug-life
  5. Hello Fragments Subclass Fragment p a c k a g

    e i n f o . e v e l i o . f r a g m e n t s ; / / i m p o r t s / / H e l l o F r a g m e n t . j a v a p u b l i c c l a s s H e l l o F r a g m e n t e x t e n d s F r a g m e n t { @ O v e r r i d e p u b l i c V i e w o n C r e a t e V i e w ( L a y o u t I n f l a t e r i n f l a t e r , V i e w G r o u p c o n t a i n e r , B u n d l e s a v e d I n s t a n c e S t a t e ) { r e t u r n i n f l a t e r . i n f l a t e ( R . l a y o u t . f r a g m e n t _ h e l l o , c o n t a i n e r , f a l s e ) ; } } J A V A /
  6. Hello Fragments Layout < ? x m l v e

    r s i o n = " 1 . 0 " e n c o d i n g = " u t f - 8 " ? > < ! - - r e s / l a y o u t / f r a g m e n t _ h e l l o . x m l - - > < F r a m e L a y o u t x m l n s : a n d r o i d = " h t t p : / / s c h e m a s . a n d r o i d . c o m / a p k / r e s / a n d r o i d " a n d r o i d : l a y o u t _ w i d t h = " m a t c h _ p a r e n t " a n d r o i d : l a y o u t _ h e i g h t = " m a t c h _ p a r e n t " > < T e x t V i e w a n d r o i d : l a y o u t _ w i d t h = " w r a p _ c o n t e n t " a n d r o i d : l a y o u t _ h e i g h t = " w r a p _ c o n t e n t " a n d r o i d : l a y o u t _ g r a v i t y = " c e n t e r " a n d r o i d : t e x t = " @ s t r i n g / h e l l o _ f r a g m e n t s " / > < / F r a m e L a y o u t > X M L /
  7. Hello Fragments Activity p a c k a g e

    i n f o . e v e l i o . f r a g m e n t s ; / / i m p o r t s / / M a i n A c t i v i t y . j a v a p u b l i c c l a s s M a i n A c t i v i t y e x t e n d s F r a g m e n t A c t i v i t y { @ O v e r r i d e p r o t e c t e d v o i d o n C r e a t e ( B u n d l e s a v e d I n s t a n c e S t a t e ) { s u p e r . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; s e t C o n t e n t V i e w ( R . l a y o u t . a c t i v i t y _ m a i n ) ; } } J A V A /
  8. Hello Fragments Activity Layout < ? x m l v

    e r s i o n = " 1 . 0 " e n c o d i n g = " u t f - 8 " ? > < ! - - r e s / l a y o u t / a c t i v i t y _ m a i n . x m l - - > < m e r g e x m l n s : a n d r o i d = " h t t p : / / s c h e m a s . a n d r o i d . c o m / a p k / r e s / a n d r o i d " > < f r a g m e n t a n d r o i d : n a m e = " i n f o . e v e l i o . f r a g m e n t s . H e l l o F r a g m e n t " a n d r o i d : i d = " @ + i d / h e l l o _ f r a g m e n t " a n d r o i d : l a y o u t _ w i d t h = " m a t c h _ p a r e n t " a n d r o i d : l a y o u t _ h e i g h t = " m a t c h _ p a r e n t " / > < / m e r g e > X M L /
  9. Fragment instance / / . . . H e l

    l o F r a g m e n t f r a g m e n t = n e w H e l l o F r a g m e n t ( ) ; / / . . . J A V A / / . . . H e l l o F r a g m e n t f r a g m e n t = F r a g m e n t . i n s t a n t i a t e ( c o n t e x t , H e l l o F r a g m e n t . c l a s s . g e t N a m e ( ) ) ; / / . . . J A V A / / . . . H e l l o F r a g m e n t f r a g m e n t = F r a g m e n t . i n s t a n t i a t e ( c o n t e x t , H e l l o F r a g m e n t . c l a s s . g e t N a m e ( ) , a r g s ) ; / / . . . J A V A /
  10. Hello Fragments Agregando el fragment g e t S u

    p p o r t F r a g m e n t M a n a g e r ( ) . b e g i n T r a n s a c t i o n ( ) . a d d ( a n d r o i d . R . i d . c o n t e n t , f r a g m e n t ) / / ( a d d , r e p l a c e , h i d e , e t c . ) . c o m m i t ( ) ; J A V A /
  11. Full Activity p a c k a g e i

    n f o . e v e l i o . f r a g m e n t s ; / / i m p o r t s p u b l i c c l a s s M a i n A c t i v i t y e x t e n d s F r a g m e n t A c t i v i t y { @ O v e r r i d e p r o t e c t e d v o i d o n C r e a t e ( B u n d l e s a v e d I n s t a n c e S t a t e ) { s u p e r . o n C r e a t e ( s a v e d I n s t a n c e S t a t e ) ; H e l l o F r a g m e n t f r a g m e n t = n e w H e l l o F r a g m e n t ( ) ; i f ( s a v e d I n s t a n c e S t a t e = = n u l l ) { g e t S u p p o r t F r a g m e n t M a n a g e r ( ) . b e g i n T r a n s a c t i o n ( ) . a d d ( a n d r o i d . R . i d . c o n t e n t , f r a g m e n t ) . c o m m i t ( ) ; } } } J A V A /
  12. Tipos UI Fragment Hidden (oculto por defecto, se muestra cuando

    se necesita) Dialogs Worker/Headless fragment (pueden usar retain instance) Nested fragments · · · · · /
  13. Comunicación f i n d F r a g m

    e n t B y * y llamar sus métodos A c t i v i t y i m p l e m e n t s i n t e r f a c e set o n A t t a c h unset o n D e t a c h E v e n t s & B u s · · · /
  14. Extras & Gotchas FragmentTransaction ActionBar o n H i d

    d e n C h a n g e , s e t U s e r V i s i b l e H i n t y s e t M e n u V i s i b i l i t y s t a r t A c t i v i t y F o r R e s u l t 16 bits menos significativos para r e q u e s t C o d e No usar m e r g e cómo el root en el layout view de un fragment Cuidado con nested fragments en el layout de un fragment Cuidado con ids/tags repetidos · Backstack i s A d d T o B a c k S t a c k A l l o w e d ( ) Transaction animations - - - · s e t H a s O p t i o n s M e n u o n C r e a t e O p t i o n s M e n u o n O p t i o n s I t e m S e l e c t e d - - - · · · · · /