SlideShare uma empresa Scribd logo
1 de 34
Fragments
Ricardo R. Lecheta
Com o aplicativo
BM&F Bovespa é
possível monitorar os
índices do mercado
financeiro através do
pregão em
andamento, consultar
em tempo real as
ações desejadas, e
acompanhar as
notícias e vídeos da
BM&F Bovespa. É
possível visualizar e
interagir com o
gráfico.
Através do aplicativo
Mobile Broker
Android é possível
consultar as ações
das bolsas de valores
e obter uma análise
do mercado através
de relatórios diários.
O Itaú Bankline para
tablet, permite acesso
a conta, localização
das agências e
caixas eletrônicos.
Disponível para os
clientes Itaú,
Personnalité e
Uniclass.
É possível acessar as
notícias do mercado,
acompanhar o gráfico
e monitorados
Índices, Ações,
Bolsas e Câmbio
através do aplicativo
UOL.
Agenda
Fragments
Porque fragments?
Fragments Android 3.x vs Compatibility Library
Migrando o código de uma activity para fragments
Utilizando fragments: XML vs API
Ciclo de vida dos fragments
Rotaçionando a tela
FragmentTransaction
Exemplos

               AndroidConf @2011 - Ricardo R. Lecheta
Fragments
Aproveitar melhor o espaço da tela nos grandes tablets




               AndroidConf @2011 - Ricardo R. Lecheta
Fragments
Como controlar diversas views com conteúdos diferentes?




              AndroidConf @2011 - Ricardo R. Lecheta
Como gerenciar todo esse conteúdo?

                         Fragments
   Aproveitar melhor o espaço da tela nos grandes tablets




                   AndroidConf @2011 - Ricardo R. Lecheta
Fragments
  Representa uma parte da interface da tela em particular.
  São mini-activities que executam dentro de uma activity principal, conhecida
com activity-host
  Possui um ciclo de vida bem definido – create/pause/resume/destroy
  Controla o seu estado e trata seus eventos, de forma independente de
outros fragments e activities
 Possui um design modular e pode ser reaproveitado




                      AndroidConf @2011 - Ricardo R. Lecheta
Fragments
Criado a partir do Android 3.0 – Honeycomb


android.app.Fragment
android.app.FragmentManager
android.app.FragmentTransaction




                  AndroidConf @2011 - Ricardo R. Lecheta
Fragments
Biblioteca de compatibilidade - Android 1.6 ou superior


android.support.v4.app.Fragment
android.support.v4.app.FragmentManager
android.support.v4.app.FragmentTransaction


andoid.support.v4.app.FragmentActivity (*)




                   AndroidConf @2011 - Ricardo R. Lecheta
Fragments
  Demo
  Criando um Fragment pelo XML

<fragment
    android:tag="tempoFrag"
    class="br.androidconf.lecheta.fragments.TempoFragment"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/>

* android:id ou android:tag

TempoFragment frag = (TempoFragment)
   getFragmentManager().findFragmentByTag(“tempoFrag");

                     AndroidConf @2011 - Ricardo R. Lecheta
Fragments
Ciclo de Vida




                AndroidConf @2011 - Ricardo R. Lecheta
Fragments
Ciclo de Vida
Fragments
Demo
Fragments
Demo
Fragments
Benefícios


Deixa a activity mais simples
Separa responsabilidades
Permite um melhor encapsulamento e aproveitamento de código
FragmentTransaction
  Demo


  Criando um Fragment pela API


FragmentManager fm = getFragmentManager();
TempoFrag ment frag = new TempoFragment();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.layoutFrag, frag1, ”tempo”);
ft.commit();


  commit() * - Obrigatório


                     AndroidConf @2011 - Ricardo R. Lecheta
Fragments
Girar a tela


Fragments adicionados pelo XML
    Android vai manter o estado
Fragments adicionados via API
    Android também vai manter o estado da FragmentTransaction
    Cuidado para não adicionar o fragment duas vezes !
FragmentTransaction
      As transações são persistidas durante o ciclo de vida da activity
      Girar a tela - Demo


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

        if(savedInstanceState == null) {
             FragmentManager fm = getFragmentManager();
             Fragment1 frag1 = new Fragment1();
             FragmentTransaction ft = fm.beginTransaction();
             ft.add(R.id.layoutFrag, frag1, Fragment1.TAG);
             ft.commit();
        }
...
Fragments
  Passagem de Argumentos – Somente pela API
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

      if(savedInstanceState == null) {
           FragmentManager fm = getFragmentManager();
           Fragment1 frag1 = new Fragment1();
           Bundle args = new Bundle();
           args.putString("msg", "Android Conf 2011 - Fragment!");
           frag1.setArguments(args);
           FragmentTransaction ft = fm.beginTransaction();
           ft.add(R.id.layoutFrag, frag1, Fragment1.TAG);
           ft.commit();
      }
...
Fragments
      Passagem de Argumentos – Somente pela API


public View onCreateView(…) {
    View view = …
    TextView text1 = (TextView) view.findViewById(R.id.text1);
    if(getArguments() != null) {
         String msg = getArguments().getString("msg");
         text1.setText(msg);
    }
...
      O construtor de um Fragment precisa ser vazio!
Salvando estado - onSaveInstanceState
  Utiliza o método onSaveInstanceState(Bundle) da mesma forma que uma
Activity
• Demo
public void onSaveInstanceState(Bundle outState) {
     super.onSaveInstanceState(outState);
     outState.putSerializable("tempo", tempo);
}
public void onActivityCreated(Bundle savedInstanceState) {
     super.onActivityCreated(savedInstanceState);
     tempo = savedInstanceState == null ? null : (Tempo)
     savedInstanceState.getSerializable("tempo");
     if(tempo == null) {
           startTask(this);
     } else {
           updateView();
     }
}
Salvando estado - setRetainInstance
  O método Fragment.setRetainInstance(boolean) é utilizado para persistir a
instância do Fragment durante o ciclo de vida de uma Activity
• Demo
public View onCreateView(…) {
     View view = inflater.inflate(R.layout.tempo_fragment, null);
     setRetainInstance(true);
     return view;
}
public void onActivityCreated(Bundle savedInstanceState) {
     super.onActivityCreated(savedInstanceState);
     if(tempo == null) {
           startTask(this);
     } else {
           updateView();
     }
}
FragmentTransaction
  Demo - FragmentTransaction .add

FragmentManager fm = getFragmentManager();
FragmentDetalhes fragDetalhes = new FragmentDetalhes();

Bundle params = new Bundle();
params.putSerializable("tempo", tempo);
fragDetalhes.setArguments(params);

FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes");
ft.commit();.
FragmentTransaction
  Demo - FragmentTransaction .add

FragmentManager fm = getFragmentManager();
FragmentDetalhes fragDetalhes = new FragmentDetalhes();

Bundle params = new Bundle();
params.putSerializable("tempo", tempo);
fragDetalhes.setArguments(params);

FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes");
ft.commit();.
FragmentTransaction
  Demo - FragmentTransaction .replace

FragmentManager fm = getFragmentManager();
FragmentDetalhes fragDetalhes = new FragmentDetalhes();

Bundle params = new Bundle();
params.putSerializable("tempo", tempo);
fragDetalhes.setArguments(params);

FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes");
ft.commit();.


* Para funcionar o replace() e remove() os fragments precisam ter sido
adicionados dinamicamente pela API
Fragment – back stack
  A “back stack” armazena a pilha de execuções de cada FragmentTransaction


  O botão voltar pode ser utilizado para desfazer uma operação efetuada
pela FragmentTransaction


  Demo
Fragment – back stack
A “back stack” armazena a pilha de execuções de cada FragmentTransaction


Qual será o comportamento do botão voltar?
Depende da interface de sua aplicação, e das necessidades do cliente
Livro Android
Livro Android
Livro Android
Livro Android
Obrigado
   Dúvidas ?




 Ricardo R. Lecheta

Mais conteúdo relacionado

Destaque

icmss-2015_Usage of Forensics Science In Intelligence Gathering (Forensics In...
icmss-2015_Usage of Forensics Science In Intelligence Gathering (Forensics In...icmss-2015_Usage of Forensics Science In Intelligence Gathering (Forensics In...
icmss-2015_Usage of Forensics Science In Intelligence Gathering (Forensics In...Government
 
Como fazer uma apresentação
Como fazer uma apresentaçãoComo fazer uma apresentação
Como fazer uma apresentaçãoTurmasthera
 
Meitin Academic Vita 06-01-15
Meitin Academic Vita 06-01-15Meitin Academic Vita 06-01-15
Meitin Academic Vita 06-01-15Rich Meitin
 
6º6 Rodrigo félix e Diogo Orfão
6º6  Rodrigo félix e Diogo Orfão 6º6  Rodrigo félix e Diogo Orfão
6º6 Rodrigo félix e Diogo Orfão drdo0011
 
Loler software presentation
Loler software presentationLoler software presentation
Loler software presentationDavid Barrett
 
Brain death presentation
Brain death presentationBrain death presentation
Brain death presentationSolomon Alemu
 
The Business Value of Metrics Driven Information Governance
The Business Value of Metrics Driven Information GovernanceThe Business Value of Metrics Driven Information Governance
The Business Value of Metrics Driven Information GovernanceEarley Information Science
 
Restauración de las 12 Puertas - 3ª La puerta Vieja
Restauración de las 12 Puertas - 3ª La puerta ViejaRestauración de las 12 Puertas - 3ª La puerta Vieja
Restauración de las 12 Puertas - 3ª La puerta ViejaValentin Moraleja
 

Destaque (13)

Seminario 2
Seminario 2Seminario 2
Seminario 2
 
Day 5
Day 5Day 5
Day 5
 
icmss-2015_Usage of Forensics Science In Intelligence Gathering (Forensics In...
icmss-2015_Usage of Forensics Science In Intelligence Gathering (Forensics In...icmss-2015_Usage of Forensics Science In Intelligence Gathering (Forensics In...
icmss-2015_Usage of Forensics Science In Intelligence Gathering (Forensics In...
 
Como fazer uma apresentação
Como fazer uma apresentaçãoComo fazer uma apresentação
Como fazer uma apresentação
 
Meitin Academic Vita 06-01-15
Meitin Academic Vita 06-01-15Meitin Academic Vita 06-01-15
Meitin Academic Vita 06-01-15
 
6º6 Rodrigo félix e Diogo Orfão
6º6  Rodrigo félix e Diogo Orfão 6º6  Rodrigo félix e Diogo Orfão
6º6 Rodrigo félix e Diogo Orfão
 
Loler software presentation
Loler software presentationLoler software presentation
Loler software presentation
 
UK Energy in 2016: The Year in Figures
UK Energy in 2016: The Year in FiguresUK Energy in 2016: The Year in Figures
UK Energy in 2016: The Year in Figures
 
Relaciones Industriales
Relaciones IndustrialesRelaciones Industriales
Relaciones Industriales
 
Brain death presentation
Brain death presentationBrain death presentation
Brain death presentation
 
Hasaw
HasawHasaw
Hasaw
 
The Business Value of Metrics Driven Information Governance
The Business Value of Metrics Driven Information GovernanceThe Business Value of Metrics Driven Information Governance
The Business Value of Metrics Driven Information Governance
 
Restauración de las 12 Puertas - 3ª La puerta Vieja
Restauración de las 12 Puertas - 3ª La puerta ViejaRestauración de las 12 Puertas - 3ª La puerta Vieja
Restauración de las 12 Puertas - 3ª La puerta Vieja
 

Semelhante a Androidconf 2011 lecheta

Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Rodrigo Rocha
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidTiago Bencardino
 
Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em AndroidPedro Veloso
 
DevFest 2012 - Esquartejando sua Activity com Fragments
DevFest 2012 - Esquartejando sua Activity com FragmentsDevFest 2012 - Esquartejando sua Activity com Fragments
DevFest 2012 - Esquartejando sua Activity com FragmentsSuelen Carvalho
 
Aplicações com Tecnologias Web
Aplicações com Tecnologias WebAplicações com Tecnologias Web
Aplicações com Tecnologias WebRildo Pragana
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaotdc-globalcode
 
Dê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com AndroidDê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com AndroidRodolfo Faquin Della Justina
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Workshop React Hooks
Workshop React HooksWorkshop React Hooks
Workshop React HooksDan Vitoriano
 
Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015talkitbr
 
Conexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidConexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidSuelen Carvalho
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...Renato Groff
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...Renato Groff
 
Fragments - Reusabilidade de layouts no Android
Fragments - Reusabilidade de layouts no AndroidFragments - Reusabilidade de layouts no Android
Fragments - Reusabilidade de layouts no AndroidLeonardo Rossetto
 

Semelhante a Androidconf 2011 lecheta (20)

Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - Android
 
Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em Android
 
DevFest 2012 - Esquartejando sua Activity com Fragments
DevFest 2012 - Esquartejando sua Activity com FragmentsDevFest 2012 - Esquartejando sua Activity com Fragments
DevFest 2012 - Esquartejando sua Activity com Fragments
 
Fragmentos
FragmentosFragmentos
Fragmentos
 
Aplicações com Tecnologias Web
Aplicações com Tecnologias WebAplicações com Tecnologias Web
Aplicações com Tecnologias Web
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Dê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com AndroidDê seus primeiros passos no desenvolvimento com Android
Dê seus primeiros passos no desenvolvimento com Android
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Workshop React Hooks
Workshop React HooksWorkshop React Hooks
Workshop React Hooks
 
Pdm -final
Pdm  -finalPdm  -final
Pdm -final
 
RYSYS Overview
RYSYS OverviewRYSYS Overview
RYSYS Overview
 
Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Conexao Java - Sua primeira app Android
Conexao Java - Sua primeira app AndroidConexao Java - Sua primeira app Android
Conexao Java - Sua primeira app Android
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
 
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas....NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
 
Fragments - Reusabilidade de layouts no Android
Fragments - Reusabilidade de layouts no AndroidFragments - Reusabilidade de layouts no Android
Fragments - Reusabilidade de layouts no Android
 

Androidconf 2011 lecheta

  • 2. Com o aplicativo BM&F Bovespa é possível monitorar os índices do mercado financeiro através do pregão em andamento, consultar em tempo real as ações desejadas, e acompanhar as notícias e vídeos da BM&F Bovespa. É possível visualizar e interagir com o gráfico.
  • 3. Através do aplicativo Mobile Broker Android é possível consultar as ações das bolsas de valores e obter uma análise do mercado através de relatórios diários. O Itaú Bankline para tablet, permite acesso a conta, localização das agências e caixas eletrônicos. Disponível para os clientes Itaú, Personnalité e Uniclass.
  • 4. É possível acessar as notícias do mercado, acompanhar o gráfico e monitorados Índices, Ações, Bolsas e Câmbio através do aplicativo UOL.
  • 5. Agenda Fragments Porque fragments? Fragments Android 3.x vs Compatibility Library Migrando o código de uma activity para fragments Utilizando fragments: XML vs API Ciclo de vida dos fragments Rotaçionando a tela FragmentTransaction Exemplos AndroidConf @2011 - Ricardo R. Lecheta
  • 6. Fragments Aproveitar melhor o espaço da tela nos grandes tablets AndroidConf @2011 - Ricardo R. Lecheta
  • 7. Fragments Como controlar diversas views com conteúdos diferentes? AndroidConf @2011 - Ricardo R. Lecheta
  • 8. Como gerenciar todo esse conteúdo? Fragments Aproveitar melhor o espaço da tela nos grandes tablets AndroidConf @2011 - Ricardo R. Lecheta
  • 9. Fragments Representa uma parte da interface da tela em particular. São mini-activities que executam dentro de uma activity principal, conhecida com activity-host Possui um ciclo de vida bem definido – create/pause/resume/destroy Controla o seu estado e trata seus eventos, de forma independente de outros fragments e activities Possui um design modular e pode ser reaproveitado AndroidConf @2011 - Ricardo R. Lecheta
  • 10. Fragments Criado a partir do Android 3.0 – Honeycomb android.app.Fragment android.app.FragmentManager android.app.FragmentTransaction AndroidConf @2011 - Ricardo R. Lecheta
  • 11. Fragments Biblioteca de compatibilidade - Android 1.6 ou superior android.support.v4.app.Fragment android.support.v4.app.FragmentManager android.support.v4.app.FragmentTransaction andoid.support.v4.app.FragmentActivity (*) AndroidConf @2011 - Ricardo R. Lecheta
  • 12. Fragments Demo Criando um Fragment pelo XML <fragment android:tag="tempoFrag" class="br.androidconf.lecheta.fragments.TempoFragment" android:layout_width="fill_parent" android:layout_height="wrap_content" /> * android:id ou android:tag TempoFragment frag = (TempoFragment) getFragmentManager().findFragmentByTag(“tempoFrag"); AndroidConf @2011 - Ricardo R. Lecheta
  • 13. Fragments Ciclo de Vida AndroidConf @2011 - Ricardo R. Lecheta
  • 17. Fragments Benefícios Deixa a activity mais simples Separa responsabilidades Permite um melhor encapsulamento e aproveitamento de código
  • 18. FragmentTransaction Demo Criando um Fragment pela API FragmentManager fm = getFragmentManager(); TempoFrag ment frag = new TempoFragment(); FragmentTransaction ft = fm.beginTransaction(); ft.add(R.id.layoutFrag, frag1, ”tempo”); ft.commit(); commit() * - Obrigatório AndroidConf @2011 - Ricardo R. Lecheta
  • 19. Fragments Girar a tela Fragments adicionados pelo XML Android vai manter o estado Fragments adicionados via API Android também vai manter o estado da FragmentTransaction Cuidado para não adicionar o fragment duas vezes !
  • 20. FragmentTransaction As transações são persistidas durante o ciclo de vida da activity Girar a tela - Demo @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if(savedInstanceState == null) { FragmentManager fm = getFragmentManager(); Fragment1 frag1 = new Fragment1(); FragmentTransaction ft = fm.beginTransaction(); ft.add(R.id.layoutFrag, frag1, Fragment1.TAG); ft.commit(); } ...
  • 21. Fragments Passagem de Argumentos – Somente pela API @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if(savedInstanceState == null) { FragmentManager fm = getFragmentManager(); Fragment1 frag1 = new Fragment1(); Bundle args = new Bundle(); args.putString("msg", "Android Conf 2011 - Fragment!"); frag1.setArguments(args); FragmentTransaction ft = fm.beginTransaction(); ft.add(R.id.layoutFrag, frag1, Fragment1.TAG); ft.commit(); } ...
  • 22. Fragments Passagem de Argumentos – Somente pela API public View onCreateView(…) { View view = … TextView text1 = (TextView) view.findViewById(R.id.text1); if(getArguments() != null) { String msg = getArguments().getString("msg"); text1.setText(msg); } ... O construtor de um Fragment precisa ser vazio!
  • 23. Salvando estado - onSaveInstanceState Utiliza o método onSaveInstanceState(Bundle) da mesma forma que uma Activity • Demo public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable("tempo", tempo); } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); tempo = savedInstanceState == null ? null : (Tempo) savedInstanceState.getSerializable("tempo"); if(tempo == null) { startTask(this); } else { updateView(); } }
  • 24. Salvando estado - setRetainInstance O método Fragment.setRetainInstance(boolean) é utilizado para persistir a instância do Fragment durante o ciclo de vida de uma Activity • Demo public View onCreateView(…) { View view = inflater.inflate(R.layout.tempo_fragment, null); setRetainInstance(true); return view; } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if(tempo == null) { startTask(this); } else { updateView(); } }
  • 25. FragmentTransaction Demo - FragmentTransaction .add FragmentManager fm = getFragmentManager(); FragmentDetalhes fragDetalhes = new FragmentDetalhes(); Bundle params = new Bundle(); params.putSerializable("tempo", tempo); fragDetalhes.setArguments(params); FragmentTransaction ft = fm.beginTransaction(); ft.add(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes"); ft.commit();.
  • 26. FragmentTransaction Demo - FragmentTransaction .add FragmentManager fm = getFragmentManager(); FragmentDetalhes fragDetalhes = new FragmentDetalhes(); Bundle params = new Bundle(); params.putSerializable("tempo", tempo); fragDetalhes.setArguments(params); FragmentTransaction ft = fm.beginTransaction(); ft.add(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes"); ft.commit();.
  • 27. FragmentTransaction Demo - FragmentTransaction .replace FragmentManager fm = getFragmentManager(); FragmentDetalhes fragDetalhes = new FragmentDetalhes(); Bundle params = new Bundle(); params.putSerializable("tempo", tempo); fragDetalhes.setArguments(params); FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.layoutFragDetalhes, fragDetalhes, "fragDetalhes"); ft.commit();. * Para funcionar o replace() e remove() os fragments precisam ter sido adicionados dinamicamente pela API
  • 28. Fragment – back stack A “back stack” armazena a pilha de execuções de cada FragmentTransaction O botão voltar pode ser utilizado para desfazer uma operação efetuada pela FragmentTransaction Demo
  • 29. Fragment – back stack A “back stack” armazena a pilha de execuções de cada FragmentTransaction Qual será o comportamento do botão voltar? Depende da interface de sua aplicação, e das necessidades do cliente
  • 34. Obrigado Dúvidas ? Ricardo R. Lecheta