aula android 05
TRANSCRIPT
![Page 1: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/1.jpg)
sábado, 17 de novembro de 12
![Page 2: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/2.jpg)
Desenvolvedor de softwarewww.carloscavalcanti.com
twitter @carloscaval
github.com/carloscavalcanti
slideshare.net/carloscavalcanti
sábado, 17 de novembro de 12
![Page 3: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/3.jpg)
Integração com webservice
Testes unitários
JSON
Testes funcionais
Fragments
sábado, 17 de novembro de 12
![Page 4: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/4.jpg)
JSON
sábado, 17 de novembro de 12
![Page 5: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/5.jpg)
JSON
{ "Aluno" : [ { "nome": "João", "notas": [ 8, 9, 7 ] }, { "nome": "Maria", "notas": [ 8, 10, 7 ] }, { "nome": "Pedro", "notas": [ 10, 10, 9 ] } ]}
JSON (com a pronúncia ['dʒejzən]), um acrônimo para "JavaScript Object Notation", é um formato leve para intercâmbio de dados computacionais.
Wikipedia
sábado, 17 de novembro de 12
![Page 6: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/6.jpg)
Vamos imaginar uma classe “Funcionario”
sábado, 17 de novembro de 12
![Page 7: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/7.jpg)
Exemplo
public class Funcionario {
private String nome; private String endereco; private Date dataNascimento;
sábado, 17 de novembro de 12
![Page 8: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/8.jpg)
sábado, 17 de novembro de 12
![Page 9: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/9.jpg)
E agora gostaria de transforma-la em JSON.
Como?sábado, 17 de novembro de 12
![Page 10: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/10.jpg)
Jackson
http://jackson.codehaus.org/sábado, 17 de novembro de 12
![Page 11: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/11.jpg)
Como adicionar a biblioteca?
sábado, 17 de novembro de 12
![Page 12: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/12.jpg)
sábado, 17 de novembro de 12
![Page 13: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/13.jpg)
sábado, 17 de novembro de 12
![Page 14: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/14.jpg)
sábado, 17 de novembro de 12
![Page 15: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/15.jpg)
{"dataNascimento":60536862000000, "endereco":"Rua tal", "nome":"João"}
Json de um funcionário
sábado, 17 de novembro de 12
![Page 16: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/16.jpg)
Json de uma lista de funcionários
[{"dataNascimento":60536862000000, "endereco":"Rua tal", "nome":"João"}, {"dataNascimento":58038951600000, "endereco":"Rua teste", "nome":"Maria"}]
sábado, 17 de novembro de 12
![Page 17: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/17.jpg)
Como implementar?
sábado, 17 de novembro de 12
![Page 18: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/18.jpg)
Vamos utilizar a classe ObjectMapper do
Jackson
sábado, 17 de novembro de 12
![Page 19: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/19.jpg)
A classe ObjectMapper nos dará as ferramentas
necessárias para gerar um json a partir de uma
instância de um objeto ou gerar um objeto a partir de
um json
sábado, 17 de novembro de 12
![Page 20: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/20.jpg)
Para gerar um JSON a partir de um objeto precisamos chamar o método
writeValueAsString.
sábado, 17 de novembro de 12
![Page 21: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/21.jpg)
String writeValueAsString(Object value)
sábado, 17 de novembro de 12
![Page 22: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/22.jpg)
Exemplo
Funcionario funcionario01 = new Funcionario("João", "Rua tal", new Date(1988, 4, 3));ObjectMapper mapper = new ObjectMapper();try { System.out.println(mapper.writeValueAsString(funcionario01);} catch (Exception e) { e.printStackTrace();}
sábado, 17 de novembro de 12
![Page 23: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/23.jpg)
{"dataNascimento":60536862000000, "endereco":"Rua tal", "nome":"João"}
output
sábado, 17 de novembro de 12
![Page 24: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/24.jpg)
E uma lista de funcionários, como
ficaria?
sábado, 17 de novembro de 12
![Page 25: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/25.jpg)
ExemploFuncionario funcionario01 = new Funcionario("João", "Rua tal", new Date(1988, 4, 3));Funcionario funcionario02 = new Funcionario("Maria", "Rua teste", new Date(1909, 2,
List<Funcionario> funcionarios = new ArrayList<Funcionario>();funcionarios.add(funcionario01);funcionarios.add(funcionario02);
ObjectMapper mapper = new ObjectMapper();try { System.out.println(mapper.writeValueAsString(funcionarios));} catch (Exception e) { e.printStackTrace();}
sábado, 17 de novembro de 12
![Page 26: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/26.jpg)
output
[{"dataNascimento":60536862000000, "endereco":"Rua tal", "nome":"João"}, {"dataNascimento":58038951600000, "endereco":"Rua teste", "nome":"Maria"}]
sábado, 17 de novembro de 12
![Page 27: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/27.jpg)
Beleza?
sábado, 17 de novembro de 12
![Page 28: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/28.jpg)
Vamos imaginar agora uma classe Pagamento
sábado, 17 de novembro de 12
![Page 29: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/29.jpg)
Exemplo
public class Pagamento { private Funcionario funcionario; private Double valor;
sábado, 17 de novembro de 12
![Page 30: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/30.jpg)
Pagamento pagamento01 = new Pagamento(funcionario01, 100.0);try { System.out.println(mapper.writeValueAsString(pagamento01));} catch (Exception e) { e.printStackTrace();}
Código
sábado, 17 de novembro de 12
![Page 31: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/31.jpg)
output - Pagamento
{"funcionario":{ "dataNascimento":60536862000000,
"endereco":"Rua tal", "nome":"João" }, "valor":100.0}
sábado, 17 de novembro de 12
![Page 32: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/32.jpg)
Vamos criar uma lista de Pagamentos
sábado, 17 de novembro de 12
![Page 33: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/33.jpg)
Código
List<Pagamento> pagamentos = new ArrayList<Pagamento>(); pagamentos.add(pagamento01); pagamentos.add(pagamento02); try { System.out.println(mapper.writeValueAsString(pagamentos)); } catch (Exception e) { e.printStackTrace(); }
sábado, 17 de novembro de 12
![Page 34: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/34.jpg)
output - Lista de Pagamentos
[{"funcionario":{ "dataNascimento":60536862000000, "endereco":"Rua tal", "nome":"João"}, "valor":100.0 },{"funcionario":{
"dataNascimento":58038951600000, "endereco":"Rua teste",
"nome":"Maria"}, "valor":1560.3 }]
sábado, 17 de novembro de 12
![Page 35: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/35.jpg)
sábado, 17 de novembro de 12
![Page 36: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/36.jpg)
Como podemos fazer o inverso?
sábado, 17 de novembro de 12
![Page 37: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/37.jpg)
Ler um JSON e transformar em objeto.
sábado, 17 de novembro de 12
![Page 38: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/38.jpg)
Para isso usamos o método readValue
sábado, 17 de novembro de 12
![Page 39: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/39.jpg)
Object ReadValue(String, Class)
sábado, 17 de novembro de 12
![Page 40: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/40.jpg)
Exemplo
ObjectMapper mapper = new ObjectMapper();try { String json = "{\"dataNascimento\":60536862000000,\"endereco\":\"Rua tal\",\"nome\":\"João\"}"; Funcionario funcionario = mapper.readValue(json, Funcionario.class); System.out.println("funcionario: " + funcionario.getNome());} catch (Exception e) { e.printStackTrace();}
sábado, 17 de novembro de 12
![Page 41: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/41.jpg)
Webservice
sábado, 17 de novembro de 12
![Page 42: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/42.jpg)
Requesthttp://www.teste.com/pegarClientes
Capturando dados
sábado, 17 de novembro de 12
![Page 43: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/43.jpg)
Response
sábado, 17 de novembro de 12
![Page 44: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/44.jpg)
Request
http://www.teste.com/pegarClientes?dataUpdate=01012010
sábado, 17 de novembro de 12
![Page 45: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/45.jpg)
Response
sábado, 17 de novembro de 12
![Page 46: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/46.jpg)
Exemplo
HttpClient httpclient = new DefaultHttpClient();HttpPost httpPost = new HttpPost("URL");try { List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("parametro", "valor"));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httpPost); System.out.println("response code: " + response.getStatusLine().getStatusCode()); System.out.println("texto: " + EntityUtils.toString(response.getEntity())); } catch (Exception e) { e.printStackTrace();}
sábado, 17 de novembro de 12
![Page 47: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/47.jpg)
Testes automatizados
sábado, 17 de novembro de 12
![Page 48: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/48.jpg)
Porque testar?
sábado, 17 de novembro de 12
![Page 49: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/49.jpg)
sábado, 17 de novembro de 12
![Page 50: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/50.jpg)
Alguns tipos de teste
• Teste unitário
• Teste funcional
• Teste de integração
• Teste de stress
sábado, 17 de novembro de 12
![Page 51: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/51.jpg)
Alguém conhece?
sábado, 17 de novembro de 12
![Page 52: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/52.jpg)
Usa?sábado, 17 de novembro de 12
![Page 53: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/53.jpg)
Teste unitário
JUnit
sábado, 17 de novembro de 12
![Page 54: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/54.jpg)
TDD (Test drive-development)
sábado, 17 de novembro de 12
![Page 55: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/55.jpg)
Desenvolvimento orientado a testes
sábado, 17 de novembro de 12
![Page 56: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/56.jpg)
Caminho a seguir
sábado, 17 de novembro de 12
![Page 57: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/57.jpg)
Passos de bebê
sábado, 17 de novembro de 12
![Page 58: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/58.jpg)
Vamos lá
sábado, 17 de novembro de 12
![Page 59: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/59.jpg)
DOJO
http://carloscavalcanti.com/2010/08/23/o-que-e-coding-dojo/
sábado, 17 de novembro de 12
![Page 60: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/60.jpg)
Três momentos:
1. o Vermelho: Quando um ou mais testes não estão passando. Adupla que está de “posse” do computador deve fazer o teste passar e aplatéia não deve falar neste momento, para não atrapalhar.
2. o Verde: Quando os testes são rodados e os mesmos passados,aí sim, neste momento a platéia poderá dar sugestões para melhor ocódigo.
3. o Amarelo: Resumindo, refatoração. Após a platéia darsugestões de modificações.
sábado, 17 de novembro de 12
![Page 61: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/61.jpg)
http://dojopuzzles.com/problemas/exibe/jokenpo/
sábado, 17 de novembro de 12
![Page 62: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/62.jpg)
Criando o projeto de teste
sábado, 17 de novembro de 12
![Page 63: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/63.jpg)
Padrão: nomeProjeto+Test
sábado, 17 de novembro de 12
![Page 64: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/64.jpg)
Selecionando projeto Target
sábado, 17 de novembro de 12
![Page 65: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/65.jpg)
Teste funcional
Robotium
http://code.google.com/p/robotium/
sábado, 17 de novembro de 12
![Page 66: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/66.jpg)
Criando projeto para teste
sábado, 17 de novembro de 12
![Page 67: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/67.jpg)
sábado, 17 de novembro de 12
![Page 68: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/68.jpg)
Adicionar no manifest do projeto de teste
<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.exemplorobotium" />
sábado, 17 de novembro de 12
![Page 69: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/69.jpg)
Classe Solo
sábado, 17 de novembro de 12
![Page 70: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/70.jpg)
Exemplo
public class TestRobotium extends ActivityInstrumentationTestCase2<MainActivity>{ private Solo solo;
public TestRobotium() { super("com.example.exemplorobotium", MainActivity.class); } public void setUp() throws Exception { solo = new Solo(getInstrumentation(), getActivity()); }
sábado, 17 de novembro de 12
![Page 71: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/71.jpg)
public void testBotaoDaSegundaTela() { assertTrue(solo.searchText("Testando")); solo.clickOnButton(0); solo.enterText(0, "Olá"); solo.clickOnButton(0); assertTrue(solo.searchText("Olá")); solo.sleep(2000); solo.clearEditText(0); solo.enterText(0, "Teste 01"); solo.clickOnButton(0); assertTrue(solo.searchText("Teste 01")); solo.sleep(2000); solo.clearEditText(0); solo.enterText(0, "ABC!"); solo.clickOnButton(0); assertTrue(solo.searchText("ABC!")); }
sábado, 17 de novembro de 12
![Page 72: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/72.jpg)
Fragments
sábado, 17 de novembro de 12
![Page 73: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/73.jpg)
Como desenvolver layouts que sejam facilmente portados para smartphones e
tablets?
sábado, 17 de novembro de 12
![Page 74: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/74.jpg)
Fragmento
sábado, 17 de novembro de 12
![Page 75: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/75.jpg)
sábado, 17 de novembro de 12
![Page 76: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/76.jpg)
sábado, 17 de novembro de 12
![Page 77: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/77.jpg)
Disponibilidade
Horneycomb
Ice Cream Sandwich
sábado, 17 de novembro de 12
![Page 78: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/78.jpg)
Android inferiores ao 3.0...
sábado, 17 de novembro de 12
![Page 79: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/79.jpg)
Adicionamos a lib
Android-support-4
sábado, 17 de novembro de 12
![Page 80: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/80.jpg)
sábado, 17 de novembro de 12
![Page 81: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/81.jpg)
Por onde começar?
sábado, 17 de novembro de 12
![Page 82: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/82.jpg)
Criando alguns “fragmentos”
sábado, 17 de novembro de 12
![Page 83: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/83.jpg)
Criar 3 layouts e em cada um inserir um textView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="vertical" >
<TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Frag 1" android:textColor="#000000" android:textSize="18sp" android:textStyle="bold" />
</LinearLayout>
sábado, 17 de novembro de 12
![Page 84: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/84.jpg)
Para cara fragment devemos criar uma classe que extenda de Fragment
public class Fragment1 extends Fragment {
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment1, null); TextView text = (TextView) view.findViewById(R.id.text1); text.setText("Fragment 1"); return view; }
}
sábado, 17 de novembro de 12
![Page 85: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/85.jpg)
public class Fragment2 extends Fragment {
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment2, null); TextView text = (TextView) view.findViewById(R.id.text2); text.setText("Fragment 2"); setRetainInstance(true); return view; } public void setTexto(String msg) { View view = getView(); if (view != null) { TextView text = (TextView) view.findViewById(R.id.text2); text.setText(msg); } }}
sábado, 17 de novembro de 12
![Page 86: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/86.jpg)
public class Fragment3 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment3, null); TextView text = (TextView) view.findViewById(R.id.text3); text.setText("Fragment 3"); return view; }}
sábado, 17 de novembro de 12
![Page 87: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/87.jpg)
E para juntarmos os fragments
Usamos uma classe que extenda de
FragmentActivity
E criamos um arquivo XML para juntar esses fragments
sábado, 17 de novembro de 12
![Page 88: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/88.jpg)
main_fragments.xml
sábado, 17 de novembro de 12
![Page 89: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/89.jpg)
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_fragments); } @Override public boolean onCreateOptionsMenu(android.view.Menu menu) { menu.add(0, 0, 0, "Alterar do Fragment 2"); return super.onCreateOptionsMenu(menu); } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { FragmentManager fm = getSupportFragmentManager(); switch (item.getItemId()) { case 0: Fragment2 frag2 = (Fragment2) fm.findFragmentById(R.id.frag2); frag2.setTexto("Novo Texto"); break; } return true; }
sábado, 17 de novembro de 12
![Page 90: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/90.jpg)
sábado, 17 de novembro de 12
![Page 91: Aula android 05](https://reader034.vdocuments.com.br/reader034/viewer/2022052400/559e670a1a28ab3a568b470c/html5/thumbnails/91.jpg)
@CarlosCaval
CarlosCavalcanti.com
sábado, 17 de novembro de 12