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

Fragments en Android & algo de responsive desig...

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

Avatar for Evelio Tarazona Cáceres

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 - - - · · · · · /