PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS E SEM FIO:
ACTIVITY
Prof. Me. Pedro Henrique Neves da Silva
• Existem 2 métodos que podem ser utilizados para iniciar uma activity:
startActivity(intent)
startActivityForResult(intent, codigo)
• A diferença entre eles é que o método startActivity(intent) apenas inicia a próxima activity sem qualquer vinculo.
• Já o método startActivityForResult(intent, codigo) recebe um parâmetro que identifica essa chamada, para que posteriormente essa segunda activity possa retornar alguma informação para a activity que a chamou.
• Esse método é utilizado caso a activity inicial que fez a chamada esteja interessada em ler o retorno quando a segunda activity terminar.
Activity
Navegação entre telas
• Exemplo: uma app que exibe uma tela para escolher um contato do celular e, logo depois de escolher o contato, a informação é retornada para a activity inicial, para, por exemplo, enviar um e-mail para o contato selecionado anteriormente.
Activity
Navegação entre telas
• startActivity(intent) e startActivityForResult(intent, codigo) recebem um objeto do tipo android.content.Intent como parâmetro.
• A classe android.content.Intent é o coração do Android (veremos mais nas próximas aulas).
Activity
Navegação entre telas
• Já sabemos que para navegar entre telas da app usamos o método startActivity(Intent).
• Para passar parâmetros de uma tela para outra usamos a classe android.os.Bundle, que funciona como uma hashTable, e o método putString(chave, valor) é utilizado para configurar propriedades.
• O método putExtras(bundle) da classe android.content.Intent recebe o objeto Bundle que será passado como parâmetro para a outra tela.
Activity
Passagem de parâmetros para a próxima tela
Ler o parâmetro enviado:
• Usamos o método getIntent() para recuperar a intent utilizada para chamar essa nova activity.
• Observe que é necessário validar se a intent não está nula, pois isso pode acontecer caso a intent tenha sido iniciada pelo usuário e não pela aplicação.
• Com o intent é possível chamar o método getExtras() que retorna o mesmo Bundle criado para enviar os parâmetros.
• Também é necessário validar se o Bundle retornado não está nulo, por que isso também pode ocorrer caso nenhum parâmetro seja enviado.
Activity
Passagem de parâmetros para a próxima tela
Ler o parâmetro enviado:
• Para ler os parâmetros passados pelo Bundle, basta chamar os métodos getString(chave), getBoolean(chave), getChar(chave), getByArray(chave), getShort(chave), getInt(chave), getLong(chave), getFloat(chave), getDouble(chave), etc.
• Em nosso caso utilizaremos o parâmetro getString(“msg”)
Activity
Passagem de parâmetros para a próxima tela
• Também podemos passar os parâmetros diretamente pela classe Intent.
• E para ler os parâmetros usamos o método getStringExtra(chave)
• Igualmente existem métodos para todos os tipos primitivos:
– getIntExtra(chave), – getLongExtra(chave), – getBooleanExtra(chave), – getFloatExtra(chave), – etc.
Activity
Passagem de parâmetros para a próxima tela
• As classes android.app.ListActivity e com.google.android.maps.MapActivity são utilizadas para exibir telas com uma lista de elementos e mapas respectivamente.
• São subclasses de Activity e encapsulam vários métodos para exibir o conteúdo na tela, restando ao programador apenas preencher o contrato definido por essa classe.
• ListActivity serve para exibir uma lista de itens na vertical.
• O método setContentView(view) é chamado automaticamente pelo ListActivity, informando o ListView, de forma que o programador não precisa se preocupar com a view da tela e sim, apenas informar os dados que irão preencher a lista.
Activity
ListActivity – Lista de Itens
• ListActivity faz uso da classe android.widget.ListAdapter, que faz a ligação entre o componente ListView e os valores que a aplicação deseja exibir na tela.
• Ao informar os valores para esse adaptador, estes podem ser informados como um simples array de strings ou até utilizando um Cursor, interface utilizada pelo Android para percorrer elementos.
• ListActivity já define internamente o componente ListView, de forma que não é necessário chamar o método setContentView(view).
Activity
ListActivity – Lista de Itens
• Cabe ao programador apenas utilizar os métodos que essa classe contém para facilitar todo o trabalho de criação e manipulação da lista.
• onListItemClick(listView, view, posicao, id) – selecionar um item.
• getListAdapter().getItem(indice) – recuperar informações do item selecionado.
Activity
ListActivity – Lista de Itens
• Um ArrayAdapter, usado para preencher a lista de itens.
• Define um array de strings que será exibido na tela na forma de lista.
• É definido pela classe android.widget.ArrayAdapter
• Essa classe é capaz de mapear o array de strings para ListView, que está contida na ListActivity.
• Observe que no construtor da classe ArrayAdapter foram informados 3 parâmetros: a referência da própria classe/activity (this), um recurso de layout predefinido pelo Android e o array de strings para preencher a lista.
Activity
ArrayAdapter
• Ao executar o exemplo será possível visualizar a lista de itens definidos anteriormente através do método onListItemClick(listView, view, posicao, id) que é executado automaticamente.
• E p a r a r e c u p e r a r o i t e m s e l e c i o n a d o u s a m o s o m é t o d o getListAdapter.getItem(posicao).