No post passado vimos como lançar uma Activity a partir de outra, usando as funções startActivity() e startActivityForResult().
Hoje usaremos esta técnica para mostrar ao usuário uma tela de “Boas Vindas” na nossa aplicação de exemplo, o QuickNotes.
Para criar essa nova Activity, usaremos alguma funções do Motodev. Se você não está usando a IDE da Motorola, não tem problema – é só criar os arquivos manualmente. Porém recomendo o uso da IDE, por facilitar bastante a nossa vida.
Vamos começar criando a Activity que dará “Boas Vindas” ao usuário.
Vá até o menu “MOTODEV” >”New” > “New Android Activity”. Na tela de configuração, entre com o nome da Activity a ser criada:
Após clicar em “Finish”, já haverá a classe “WelcomeActivity” no diretório src do nosso projeto.
Com a Activity criada, o próximo passo é criar o arquivo XML que definirá o seu layout. Crie o arquivo ‘welcome.xml’ no diretorio res/layout com o seguinte conteúdo:
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/welcome_text_view" android:layout_width="fill_parent" android:layout_height="300dip" android:gravity="center" android:text="Bem vindo à aplicação QuickNotes!\n\nEssa aplicação foi feita durante o curso 'Desenvolvendo para Android' do site felipesilveira.com.br" > </TextView> <Button android:id="@+id/welcome_ok_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Continuar" > </Button> </TableLayout>
Este arquivo XML define uma Activity com um texto e um botão logo abaixo, com a palavra “Continuar”.
Após criado o arquivo, vamos carregá-lo no método onCreate() da WelcomeActivity():
setContentView(R.layout.welcome);
Lançando a WelcomeActivity
Para lançar a WelcomeActivity a partir da MainActivity, usaremos a função startActivity(). Esta função recebe como parâmetro um Intent. Posteriormente iremos aprofundar nosso conhecimento sobre essa importante classe, mas por enquanto o que você precisa saber é que ela é usada para fazer a comunicação entre Activities.
No código abaixo instanciamos um Intent cuja única função é lançar a WelcomeActivity, e então o usamos como parâmetro para a startActivity.
Dessa forma, o código da MainActivity fica assim:
package br.com.felipesilveira.quicknotes;
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent i = new Intent(this, WelcomeActivity.class);
startActivity(i);
}
}
Tratando os eventos de um botão
Até agora, já temos a Activity secundária sendo lançada, mas o que deve acontecer quando o usuário clicar no botão “Continuar”?
A WelcomeActivity deve morrer - Dessa forma, a última Activity instanciada será mostrada novamente – que por sinal é a nossa MainAcitivity!
Para fazer isso, devemos adicionar um listener ao botão para que o método finish() seja invocado ao clique do usuário. O método finish() da classe Activity força a “morte” desta.
O código da WelcomeActivity fica assim:
package br.com.felipesilveira.quicknotes;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class WelcomeActivity extends Activity {
/**
* @see android.app.Activity#onCreate(Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
final Button button = (Button) findViewById(R.id.welcome_ok_button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
finish();
}
});
}
}
Executando nosso projeto, temos a seguinte tela:
Assim, finalizamos nossa Activity de “Boas Vindas”. Até o próximo artigo!

Posts Relacionados



Ae! Continua que to aprendendo
Muito intuitivo!!! Abraços
Valeu! E no que depender de mim vou até o final nesse projeto!
Eae Felipe, tudo bom?
Cara, muito bom o seu tutorial, está me ajudando muito, porém não estou conseguindo criar uma
Activity Secundária. Fiz tudo como vc explicou usando o eclipse, porém na hora de compilar o emulador de celular apresenta a seguinte msg de erro: “Sorry, the aplication Hello World 2 (process org.android.helloworld) has stopped unexpectedly. Please try again.”
Será que você poderia me dar uma luz da causa desse erro? =]
Vlw, []s
Oi Daniel,
A melhor forma de descobrir o que está acontecendo é coletando logs.
Essa mensagem geralmente acontece quando uma fatal exception é lançada (Por exemplo, um RuntimeException). Pelo log você verá onde a exception foi lançada.
Para coletar logs, use o logcat.
Valeu!
Daniel, pode ser que o problema esteja no seu AndroidManifest.xml, verifique se existe duas referencias de neste arquivo. Pelo menos o problema que eu tinha era isso.
ótimo tutorial!
eu tive um problema na linha
Intent i = new Intent(this, WelcomeActivity.class);
deve ser a atualização da sdk, mas agora tem que usar o constructor desta forma:
Intent intent = new Intent(WelcomeActivity .this, CategorySelection.class);
abraço!
outra dica
para quem nao usa o MOTODEV (como eu) basta criar uma classe filha da Activity e no AndroidManifest.xml, colocar a referencia para a classe
ex:
eu criei a classe CategorySelection
no manifest, coloquei o seguinte:
Já fiz de tudo, ou pelo menos quase tudo pra colocar esse código pra rodar. O tempo todo dá a mensagem abaixo:
“Sorry, the aplication Teste2 (process android.teste2) has stopped unexpectedly. Please try again.”
O que devo fazer?
Para todos que tiverem esse erro, no tutorial ficou faltando você adicionar a activity no AndroidManifest.xml.
Ex:
Guilherme, vou te dar 2 caminhos (ainda não estudei a estrutura do AndroidManifest.xml -> foi no chutômetro).
1) Incluir a linha neste xml:
ou
2) Utilizar um “suporte” que o Eclipse dá para a criação desta linha no xml. Basta abrir o AndroidManifest.xml e clicar nas abas de suporte ao lado (Application -> Application Nodes -> Add). Obviamente, aqui é mais fácil de configurar inicialmente. Mas como te disse, ainda preciso estudar a estrutura.
Aproveitando para agradecer ao Felipe pela iniciativa e parabenizar pela didática nos conteúdos.
Depois do “:” dá pau por causa das tags… Logo, troque “{” por “<", ok?
{activity android:name="WelcomeActivity"}{/activity}
Valeu pela iniciativa cara!!
Alguém conseguir criar a Activity pelo eclipse? (não pelo MOTODEV). Quais os passos?
Aurino, basta você criar uma classe comum, estendendo a classe Activity.
Vlw Felipe. Mas acabei baixando o MOTODEV. Aproveito para parabenizar pelo tutorial.
Eu consegui pelo eclipse, foi mesmo pelo AndroidManifest.xml do seguinte modo:
No modo texto – adicionar
na tag
No modo padrão do editor – na parte inferior da janela, há uma aba application,
clickando nela e seguindo para a parte inferior adicione sua activity em
application nodes, e em attributes for -> Name, escolha a classe que herda de
Activity.
Felipe,
Eu instalei o MOTODEV for Android 2.2, a versão para Windows 64 Bits, visto que meu computador está com Win7 64 Bits ( tem 4Gb de Ram, Core 2 Duo ). Mas não estou entendendo por tudo é tão lento !!! Tudo que faço demora uma eternidade! Para executar a aplicação, para adicionar uma Activity, tudo.. Para você ter uma idéia eu mandei rodar a aplicação apenas com o exemplo do “Hello Word” que vc postou e demorou mais de 10 min.. eu tive que reiniciar o computador.
Sabe o que acontece ?
Oi,
Nossa. Você mostrou o que eu estava precisando.
Obrigada.
Tchauzin!
Para funcionar tem que adicionar no manifest.xml o seguinte:
Depois da linha
Para funcionar tem que adicionar no manifest.xml o seguinte sem as {}:
{}
Depois da linha {}
Não da pra postar a solução aqui -_-#
em fim, o projto foi abandonado? pq vi que muita gente teve problemas com Activity Secundária, inclusivi eu, sou iniciando em java, e não consegui passa dessa fase xD.
Oi Jean,
O projeto não foi abandonado. Ele teve um hiato nos últimos por fatla de tempo para escrever, mas essa semana eu retomo o projeto.
Obrigado!