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
AlertDialogAs 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.xmlConforme 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.xmlComo 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
GridLayoute 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.