Por Christian Göllner para o PPLWARE.COM
Depois de termos aprendido a instalar e configurar o SDK (ver aqui) desenvolvemos o layout de uma aplicação tipo calculadora (ver aqui). Na parte 3 demos vida à calculadora ( ver aqui).
Até agora temos trabalhado numa app que mostra uma activity, i.e. um único ecrã. Hoje vamos aprender a iniciar um segundo ecrã quando o utilizador seleccionar um botão.
Passo 1 – Vamos abrir o eclipse e seleccionar um workspace qualquer. Passo 2 – Criar um novo projecto Android com um nome à escolha. Passo 3 – Abrimos o único ficheiro .xml que está na pasta res/layout e substituímos tudo pelo seguinte código:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<EditText
android:id="@+id/editTextMensagem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/botaoEnviar"
android:layout_marginTop="16dp"
android:ems="10" />
<Button
android:id="@+id/botaoEnviar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editTextMensagem"
android:layout_alignBottom="@+id/editTextMensagem"
android:layout_alignParentRight="true"
android:text="Enviar"
android:onClick="enviarMensagem" />
</RelativeLayout>
O atributo android:onClick serve para dizer que sempre que este botão for seleccionado, vai ser chamado um método chamado enviarMensagem dentro da activity que está a utilizar este layout.
Passo 4 – Vamos abrir o único ficheiro .java presente no nosso projeto e adicionar o tal método enviarMensagem.
/** Chamado quando o utilizador seleccionar o botão de enviar **/
public void enviarMensagem(View view) {
}
Vai aparecer uma mensagem de erro no eclipse porque ainda não importámos a classe View.
Podemos utilizar o atalho Ctrl + Shift + O para importar as classes em falta (Cmd + Shift + O no Mac).
É importante referir que para o sistema detetar correctamente este método, o nome do método tem de coincidir com o nome atribuido no ficheiro xml e ainda tem que:
- Ter visibilidade public
- Ter como tipo de retorno void
- Ter como único parâmetro um View
Passo 5 – Criar um Intent.
Um Intent(Intenção) é um objecto que permite ligar componentes em runtime. Representa a intenção da aplicação fazer algo. Pode-se utilizar um Intent para muitas coisas, como por exemplo partilhar conteúdo, ir buscar conteúdo ou iniciar outras Activities. Nós vamos querer utilizá-lo para iniciar uma Activity.
Dentro do método enviarMensagem() vamos então criar um Intent para iniciar uma activity chamada MostrarMensagemActivity (que vamos criar a seguir):
/** Chamado quando o utilizador seleccionar o botão de enviar*/
public void enviarMensagem(View view) {
Intent intent = new Intent(this, MostrarMensagemActivity.class);
}
O construtor da classe Intent utilizado aqui recebe dois parâmetros:
- Um Context como primeiro parâmetro. Neste caso passamos this, que é uma referência para a instância da nossa classe actual. Este parâmetro é necessário para a segunda Activity saber quem a criou e depois quando ela terminar saber para onde regressar.
- A Class do componente ao qual o sistema tem que entregar oIntent.
Um Intent para além de permitir iniciar uma Activity, também permite transportar dados de uma Activity para outra. Nós vamos utilizar essa funcionalidade para transportar a mensagem inserida na caixa de texto.
/** Chamado quando o utilizador seleccionar o botão de enviar */
public void enviarMensagem(View view) {
Intent intent = new Intent(this, MostrarMensagemActivity.class);
EditText editText = (EditText) findViewById(R.id.editTextMensagem);
String mensagem = editText.getText().toString();
intent.putExtra(“EXTRA_MENSAGEM”, mensagem);
startActivity(intent);
}
Para transportar dados num Intent usam-se entradas de pares chave-valor. No nosso caso a String “EXTRA_MENSAGEM” é a chave e a String mensagem é o valor.
Passo 6 – Criar a segunda Activity.
No nosso projecto vamos criar uma classe nova chamada MostrarMensagemActivity que extende a classe Activity.
public class MostrarMensagemActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
Agora vamos ter de declarar esta Activity no ficheiro AndroidManifest.xml para poder ser executada. <application … > <activity android:name=”.MostrarMensagemActivity” /> … </application>
Passo 7 – Receber o Intent e mostrar a mensagem.
public class MostrarMensagemActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Obter a mensagem do Intent
Intent intent = getIntent();
String mensagem = intent.getStringExtra(“EXTRA_MENSAGEM”);
// Criar um TextView
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(mensagem);
setContentView(textView);
}
}
A partir de agora já se pode correr a app, escrever uma mensagem, pressionar “Enviar” e ver a mensagem a aparecer na segunda Activity.
Nota: Este tutorial foi adaptado a partir de um tutorial do Android Training.