Vous êtes sur la page 1sur 5

Android: Activity e interação entre Activities | Technè Página 1 de 5

Technè Tecnologia & Experiência do Usuário no C.E.S.A.R

sobre trabalhe no c.e.s.a.r.


home

buscar
1 Android: Activity e interação entre Activities
Posted by Felipe Ferraz On janeiro - 13 - 2011 blog de design do
c.e.s.a.r.
* Este post foi redigido pela equipe C.E.S.A.R. Sorocaba

Ao desenvolver uma aplicação para Android, devemos estar familiarizados com alguns conceitos básicos
relacionados à sua estrutura. Entre eles, podemos citar dois componentes essenciais para toda
aplicação: as activities e os intents.
Português

English
Uma Activity é uma classe Java que herda da classe Activity do pacote Android. Ela define a tela que irá
interagir com um usuário de Android. Para desenvolver qualquer aplicação com interface em Android é
necessário que se tenha ao menos uma Activity. CATEGORIAS
Desempenho e Segurança de
É importante ressaltar que a Activity é apenas a tela exibida, sem nenhum layout. Geralmente, para Sistemas

adicionarmos conteúdo nas activies, devemos utilizar os arquivos xml de layout do Android, nos quais Geral
definem-se todos os elementos visuais, tais como botões e imagens.
Web 2.0

Aqui descreveremos uma utilização básica de Activity onde uma primeira Activity (Tela principal) chama Sistemas e Aplicações Wireless

outra Activity e esta retorna um valor para a primeira. Sistemas Embarcados

Testes
Inicialmente é preciso criar um novo projeto Android, com um nome de sua preferência.
User Experience

TV Digital

BLOGROLL
Borba on Software

Devendra @ Work

Mobile Coding

Nelson Glauber

Rafael Ribeiro

Silvio Meira

Thiago Burgos

Thiago Veras

Tiago Barros

Vinícius Rocha

EVENTOS
« Sep Nov »

October 2013
M T W T F S S

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 EC

TAG CLOUD

.net Android
análise de imagens

digitaisarduino bada
Aqui estamos usando Android 2.2. banco de
dadosc#Cluster concorrência
Depois a classe Primeiro será criada e o xml main.xml (em res->;layout) contendo os elementos que css Deployment
serão apresentados ao usuário, inicialmente apenas um texto. ManagerdesempenhoDesempenho

Alteramos então o main.xml adicionando um botão. e Segurança de


SistemasEclipseGoogle
main.xml TVhtml Java
< LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
ME jdb locks microsoft
monitor Network DeploymentNode

http://techne.cesar.org.br/android-activity-e-interacao-entre-activities/ 18/10/2013
Android: Activity e interação entre Activities | Technè Página 2 de 5

android:layout_width=”fill_parent” Agentnolock ORACLE pdi


peformamce performance
android:layout_height=”fill_parent” processamento digital de

> imagensRequisitossamsung
Software Segurosql sql
serverthread contentionthread
<Button dumpstuning TV Digitalvisão

android:id=”@+id/botao”
w3c
computacionalvs2008vs2010
web WebSphere widget
android:layout_width=”fill_parent”
android:layout_height=”wrap_content” WP Cumulus Flash tag cloud by Roy
Tanck and Luke Morton requires
android:text=”@string/botao” /> Flash Player 9 or better.

<TextView
android:id=”@+id/textoMain”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
/>

</LinearLayout>

Dessa forma temos na tela um botão com Id botao, que podemos acessar do Activity pelo método
findViewById(Id) e um texto que exibirá nosso resultado.

Podemos então criar uma segunda Activity, com nome Segundo. Basta criar uma nova classe no seu
pacote, que herde da classe Activity.

E podemos criar um novo xml para representar a tela dessa segunda Activity. Basta adicionar um novo
arquivo Android XML em layout.

http://techne.cesar.org.br/android-activity-e-interacao-entre-activities/ 18/10/2013
Android: Activity e interação entre Activities | Technè Página 3 de 5

Obs: Os nomes dos recursos devem ser escritos em caracteres minúsculos.

Nesse xml adicionaremos um campo para o usuário escrever seu nome e um botão.

<LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”>

<EditText
android:id=”@+id/texto”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/texto”
/>

<Button android:text=”@string/botao2″
android:id=”@+id/botao2″
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”/>
< /LinearLayout>

Agora que temos as duas telas prontas podemos fazer as duas se comunicarem.
Na Activity Primeiro, dentro do método onCreate e após a chamada de setContentView, criamos uma
variável para acessar o botão criado na tela com o id botao.

1Button botao = (Button) findViewById(R.id.botao);

Note que estamos recuperando o id do botão através da classe R, que é gerada pelo Eclipse sempre
que alteramos algum recurso do projeto. Esta classe é responsável por mapear estes recursos,
permitindo assim o seu acesso.

Adicionamos então um Listener ao botão para controlarmos a ação que ocorrerá quando o usuário clicar
nele.

1botao.setOnClickListener(new View.OnClickListener() {
2public void onClick(View v) {
3Intent i = new Intent(Primeiro.this, Segundo.class);
4startActivityForResult(i, 1);
5}
6});

A classe Intent permite que realizemos a comunicação entre duas Activities passando diferentes tipos
de informações. Tais informações podem ser quaisquer tipos primitivos de Java e objetos de classes
serializáveis. Precisamos apenas informar a instância da Activity inicial e o tipo da que será chamada.
Existem vários métodos que iniciam activities, mas nesse caso é importante utilizar o método
startActivityForResult, pois este permite capturar resultados fornecidos pela Activity chamada. Esse
método irá criar a nova Activity (no caso a Segundo) e esperará um retorno assim que essa for
encerrada. Além disso, passamos um código de requisição à segunda Activity , de acordo com a
necessidade da aplicação.

Para receber o retorno da segunda Activity precisamos sobrescrever o método onActivityResult da


classe Activity.

1public void onActivityResult(int requestCode, int resultCode,


2Intent data) {
3TextView t = (TextView) findViewById(R.id.textoMain);
4t.setText(data.getExtras().getString("valor"));
5}

O objeto t é o texto que será exibido na tela. O valor recuperado em data.getExtras().getString(“valor”)


é o retorno da segunda Activity, que é passado pelo Intent data.

A segunda Activity deve recuperar o valor que o usuário digitar e enviar a primeira Activity.

1Button botao = (Button) findViewById(R.id.botao2);


1botao.setOnClickListener(new View.OnClickListener() {
1public void onClick(View v) {
2Intent data = new Intent();
3data.putExtra("valor", ((EditText)findViewById(R.id.texto)).getText().toString());
4setResult(2, data);

http://techne.cesar.org.br/android-activity-e-interacao-entre-activities/ 18/10/2013
Android: Activity e interação entre Activities | Technè Página 4 de 5

1
1 finish();
2}
3});

Como na primeira acessamos o botão com um Listener e criamos um Intent para enviar a resposta a
primeira Activity. Usamos o método putExtra para adicionar o texto digitado com um chave “valor”, que
será acessada na primeira Activity. E chamamos o setResult para adicionar o Intent como resultado
dessa Activity. E finalizamos a Activity com finish.

Para acessar aplicativos nativos do Android como a lista de contatos também podemos usar o Intent, da
seguinte forma:
Declaramos:

1static final int PICK_CONTACT_REQUEST = 0;

E no onClick do botao temos:

1public void onClick(View v) {


2startActivityForResult(
3new Intent(Intent.ACTION_PICK,
4android.provider.ContactsContract.Contacts.CONTENT_URI),
5PICK_CONTACT_REQUEST);
6}

Nesse caso instanciamos o Intent com uma ação de “escolha” ( Intent.ACTION_PICK) para o usuário
selecionar um contato, a URI para acessar a lista de contatos
(android.provider.ContactsContract.Contacts.CONTENT_URI) e código de requisição para identificar a
operação (PICK_CONTACT_REQUEST).

E para exibir os dados do contato selecionado ao receber a resposta inicial podemos escrever o método
onActivityResult dessa forma:

1if (requestCode == PICK_CONTACT_REQUEST) {


2if (resultCode == RESULT_OK) {
3startActivity(new Intent(Intent.ACTION_VIEW, data.getData()));
4}
5}

Chamando uma outra Activity que exibe os dados do contato escolhido passados em uma URI que
retorna no Intent em data.getData().

Os nossos leitores gostaram igualmente de

Android: Uma visão Como descobrir o Dissector para o Descobrindo


mais detalhada nível do sinal de Wireshark | Technè informações de
sobre Widgets | uma rede wireless bateria dos
Technè no Android. | dispositivos
Technè Android | Technè
Recommended by

Categorias: Geral

One Response to “Android: Activity e interação entre Activities”


sexta, maio 27th, 2011 16:10:01
Descobrindo informações de bateria dos
dispositivos Android | Technè says:
[...] Nota: O método abaixo deve fazer parte de uma Activity onde será chamado. Mais informações
sobre Activities aqui. [...]

Leave a Reply
Name (required)

Mail (will not be published) (required)

Website

Submit Comment

http://techne.cesar.org.br/android-activity-e-interacao-entre-activities/ 18/10/2013
Android: Activity e interação entre Activities | Technè Página 5 de 5

CAPTCHA Code

http://techne.cesar.org.br/android-activity-e-interacao-entre-activities/ 18/10/2013

Vous aimerez peut-être aussi