• Nenhum resultado encontrado

Objetos Intent para ativar outras atividades

No documento Android Como Programar (páginas 146-149)

4 Aplicativo TwitterSearches

4.2 Teste do aplicativo

4.3.6 Objetos Intent para ativar outras atividades

O Android usa uma técnica conhecida como troca de mensagens de intenção para transmitir informações entre atividades dentro de um aplicativo ou atividades em apli- cativos separados. Cada atividade pode especificar filtros de intenção indicando as ações que consegue manipular. Os filtros de intenção são definidos no arquivo AndroidMani- fest.xml. Na verdade, em cada aplicativo até aqui, o IDE criou um filtro de intenção

para sua única atividade, indicando que ele podia responder à ação predefinida chama-

da android.intent.action.MAIN, a qual especifica que a atividade pode ser usada para

ativar o aplicativo para iniciar sua execução.

Um objeto Intent é usado para ativar uma atividade – ele indica uma ação a ser executada e os dados nos quais essa ação vai atuar. Neste aplicativo, quando o usuário toca em um identificador de pesquisa, criamos uma URL contendo a consulta de bus- ca no Twitter. Carregamos a URL em um navegador Web criando um novo elemento

Intent para ver uma URL, passando então esse Intent para o método startActivity, o qual nosso aplicativo herda indiretamente da classe Activity. Para ver uma URL, startActivity ativa o navegador Web do dispositivo para exibir o conteúdo – neste

aplicativo, os resultados de uma busca no Twitter.

Usamos também um elemento Intent e o método startActivity para exibir um

selecionador de intenção – uma interface gráfica do usuário que mostra uma lista de aplicativos que podem manipular o objeto Intent especificado. Usamos isso ao com-

partilhar uma pesquisa salva para permitir ao usuário escolher como vai compartilhar uma busca.

Objetos Intent implícitos e explícitos

Os objetos Intent usados neste aplicativo são implícitos – não especificaremos um com-

ponente para exibir a página Web; em vez disso, permitiremos que o Android ative a ati- vidade mais adequada com base no tipo dos dados. Se várias atividades puderem tratar da

ação e dos dados passados para startActivity, o sistema exibirá uma caixa de diálogo

na qual o usuário poderá selecionar a atividade a ser usada. Se o sistema não consegue encontrar uma atividade para tratar da ação, então o método startActivity lança uma

exceção ActivityNotFoundException. Em geral, considera-se uma boa prática tratar essa

exceção. Optamos por não fazer isso neste aplicativo, pois os dispositivos Android nos quais esse aplicativo provavelmente vai ser instalado têm um navegador capaz de exibir uma página Web. Em aplicativos futuros, também usaremos objetos Intent explícitos, os quais indicam precisamente a atividade a ser iniciada. Para obter mais informações

sobre objetos Intent, visite:

http://developer.android.com/guide/components/intents-filters.html

4.3.7

AlertDialog

As mensagens, opções e confirmações podem ser exibidas para os usuários do aplicati- vo por meio de componentes AlertDialog. Enquanto uma caixa de diálogo está sendo exibida, o usuário não pode interagir com o aplicativo – isso é conhecido como caixa de diálogo modal. Conforme você vai ver, as configurações da caixa de diálogo são es- pecificadas com um objeto AlertDialog.Builder, sendo ele então utilizado para criar o componente AlertDialog.

Os componentes AlertDialog podem exibir botões, caixas de seleção, botões de

opção e listas de itens em que o usuário pode tocar para responder à mensagem da caixa de diálogo. Um componente AlertDialog padrão pode ter até três botões representando:

• Uma ação negativa – Cancela a ação especificada da caixa de diálogo, frequente- mente rotulada com Cancel ou No. Esse é o botão mais à esquerda quando existem

vários na caixa de diálogo.

• Uma ação positiva – Aceita a ação especificada da caixa de diálogo, frequentemente rotulada com OK ou Yes. Esse é o botão mais à direita quando existem vários na

caixa de diálogo.

• Uma ação neutra – Esse botão indica que o usuário não quer cancelar nem aceitar a ação especificada pela caixa de diálogo. Por exemplo, um aplicativo que pede ao usuário para que se registre a fim de obter acesso a recursos adicionais poderia fornecer o botão neutro Remind Me Later (Lembre-me depois).

Neste aplicativo, usamos componentes AlertDialog com várias finalidades:

• Para exibir uma mensagem ao usuário, caso nenhum ou ambos os componentes

EditText de consulta e identificação estejam vazios. Essa caixa de diálogo conterá

somente um botão positivo.

• Para exibir as opções Share, Edit e Delete para uma pesquisa. Essa caixa de diálogo

conterá uma lista de opções e um botão negativo.

• Para que o usuário confirme antes de excluir uma pesquisa – no caso de ter tocado acidentalmente na opção Delete para uma pesquisa.

Mais informações sobre as caixas de diálogo do Android podem ser encontradas em:

http://developer.android.com/guide/topics/ui/dialogs.html

4.3.8

AndroidManifest.xml

Conforme você aprendeu no Capítulo 3, o arquivo AndroidManifest.xml é gerado no

momento em que um aplicativo é criado. Para este aplicativo, vamos mostrar a você como adicionar no manifesto uma configuração que impede a exibição do teclado vir- tual quando o aplicativo é carregado pela primeira vez. Para ver os detalhes completos de

AndroidManifest.xml, visite:

http://developer.android.com/guide/topics/manifest/manifest-intro.html

Vamos abordar vários aspectos do arquivo AndroidManifest.xml por todo o livro.

4.4 Construção da interface gráfica do usuário do

aplicativo

Nesta seção, vamos construir a interface gráfica do usuário do aplicativo Twitter Searches.

Também vamos criar um segundo layout XML, o qual o componente ListView vai inflar

dinamicamente e usar para exibir cada item.

4.4.1 Criação do projeto

Lembre-se de que o IDE Android Developer Tools só permite um projeto com deter- minado nome por área de trabalho; portanto, antes de criar o novo projeto, exclua o projeto TwitterSearches que você testou na Seção 4.2. Para isso, clique nele com o botão

direito do mouse e selecione Delete. Na caixa de diálogo que aparece, certifique-se de

que Delete project contents on disknão esteja selecionado e, em seguida, clique em OK. Isso

remove o projeto da área de trabalho, mas deixa a pasta e os arquivos do projeto no disco para o caso de posteriormente você querer ver o aplicativo original outra vez.

Criando um novo projeto Blank App

Crie um novo Android Application Project. Especifique os seguintes valores no primeiro

passo de New Android Application da caixa de diálogo New Android Project e, em seguida,

pressione Next >:

Application name: Twitter Searches

Project name: TwitterSearches

Package name: com.deitel.twittersearches

Minimum Required SDK: API18: Android 4.3

Target SDK: API19: Android 4.4

Compile With: API19 : Android 4.4

Theme: Holo Light with Dark Action Bar

No segundo passo de New Android Application da caixa de diálogo New Android Project, dei-

xe as configurações padrão e pressione Next >. No passo Configure Launcher Icon, clique no

botão Browse..., selecione uma imagem de ícone de aplicativo (fornecida na pasta ima- ges com os exemplos do livro), pressione Open e depois Next >. No passo Create Activity,

selecione Blank Activity e pressione Next >. No passo Blank Activity, deixe as configurações

padrão e clique em Finish para criar o projeto. No editor Graphical Layout, abra activi- ty_main.xml e selecione Nexus 4 na lista suspensa de tipo de tela (como na Fig. 2.12).

Mais uma vez, usaremos esse dispositivo como base para nosso projeto.

4.4.2 Visão geral de

activity_main.xml

Como no Capítulo 3, o layout activity_main.xml deste aplicativo utiliza um compo-

nente GridLayout (Fig. 4.11). Neste aplicativo, o componente GridLayout contém três

linhas e uma coluna. A Figura 4.12 mostra os nomes dos componentes da interface gráfica do aplicativo.

linha 1

linha 2

linha 0 Esta linha é um componente

LinearLayout horizontal contendo um elemento

EditText e um elemento ImageButton

Esta linha é um componente

LinearLayout vertical contendo um elemento TextView

(Tagged Searches) e um elemento ListView

tagEditText

@android:id/list

(esse é o nome obrigatório para o componente ListView em um layout padronizado de ListActivity) queryEditText saveButton

Figura 4.12 Componentes da interface gráfica do usuário do aplicativo Twitter Searches rotulados com seus valores de propriedade Id.

4.4.3 Adição de

GridLayout

e componentes

Utilizando as técnicas aprendidas no Capítulo 3, você vai construir a interface gráfica do usuário das Figuras 4.11 e 4.12. Todos os passos nas subseções a seguir presumem que você está trabalhando com o layout no editor Graphical Layout do IDE. Como lembrete,

frequentemente é mais fácil selecionar um componente de interface gráfica do usuário em particular na janela Outline.

Você vai começar com o layout e os controles básicos e, em seguida, vai personalizar as propriedades dos controles para concluir o projeto. Use a janela Outline para adicionar

elementos às linhas corretas do componente GridLayout. À medida que adicionar compo-

nentes de interface gráfica do usuário, configure suas propriedades Id como mostrado na

Fig. 4.12 – nesse layout existem vários componentes que não exigem Id, pois nunca são refe-

renciados no código Java do aplicativo. Além disso, lembre-se de definir todos os valores de string literais no arquivo strings.xml (localizado dentro da pasta res/values do aplicativo).

Passo 1: Mudando de RelativeLayout para GridLayout

Siga os passos da Seção 3.4.3 para trocar de RelativeLayout para GridLayout.

No documento Android Como Programar (páginas 146-149)