Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Informática para Internet / Dispositivos Móveis / Aula
A comunicação entre Activities é uma parte bastante importante em qualquer aplicação Android. É através dessa comunicação que é possível criar aplicações com telas diversas, capazes de realizar tarefas com grande precisão. Para iniciar uma nova Activity, utilizamos o comando startActivity(), passando como parâmetro um Intent que descreva a Activity a ser inicializada.
Frequentemente estaremos utilizando esse método para inicializar novas Activities dentro do contexto da nossa aplicação. Sendo assim, a maneira mais fácil e eficiente de se iniciar essas Activities é através de Intents explícitos, indicando exatamente a qual classe aquele Intent se destina. Uma vez criada uma nova Activity e declarada no Manifest, basta dizer que a classe a ser inicializada por Intent, deve ser a que foi previamente declarada.
Vejamos na Listagem 3 como criar um Intent destinado a uma Activity da nossa aplicação.
Intent intent = new Intent(this, HelloActivity.class);
startActivity(intent);
Na Listagem 3, vemos o exemplo da criação de um Intent responsável por inicializar a Activity HelloActivity, que já deve ter sido criada e declarada no Manifest. Esse construtor de Intents recebe dois parâmetros: o contexto e o componente alvo. O contexto da aplicação pode ser passado com o parâmetro “this” caso este represente a Activity atual. Já o component deve ser preenchido com uma referência à classe que desejamos acessar. Utilizando essa forma de trabalhar com Intents, é possível criar um fluxo de telas entre as Activities do seu programa. Para ver o funcionamento disso, vamos criar essa nova Activity dentro do projeto da tela de login, utilizado na aula anterior. Essa nova Activity pode ser a padrão, apenas com o texto de “Hello Activity”. Nomeie essa Activity HelloActivity e declare-a no Manifest. A Listagem 4 mostra a alteração que deve ser feita no código da Activity principal, criada na aula anterior, para que possamos iniciar a Activity HelloActivity ao realizarmos o login.
package br.ufrn.imd.aula05f;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class Aula05Activity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button confirmar = (Button) findViewById (R.id.confirmar);
Button limpar = (Button) findViewById (R.id.limpar);
final EditText login = (EditText) findViewById(R.id.login_text);
final EditText senha = (EditText) findViewById(R.id.pass_text);
final ImageView imgView = (ImageView) findViewById(R.id.imageView1);
confirmar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String loginStr = login.getText().toString();
String senhaStr = senha.getText().toString();
if (loginStr != null && loginStr.equals("aluno")) {
if (senhaStr != null && senhaStr.equals("aluno")) {
// Sucesso
Intent intent = new Intent(getApplicationContext(), HelloActivity.class);
startActivity(intent);
} else {
//Falha senha
Toast.makeText(getApplicationContext(), "Senha inválida", Toast.LENGTH_SHORT).show();
}
} else {
//Falha login
Toast.makeText(getApplicationContext(), "Login inválido", Toast.LENGTH_LONG).show();
}
}
});
limpar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
login.setText("");
senha.setText("");
imgView.setImageResource(android.R.drawable.presence_offline);
}
});
}
}
Agora, ao invés de modificar um ImageView no caso de um login bem sucedido, iniciamos uma nova Activity, que, após algum desenvolvimento, pode ser a tela inicial para aquele usuário que acaba de logar, com as informações que a aplicação se propõe a fornecer. O que é realmente importante nesse exemplo é entender como é simples criar uma nova Activity utilizando um Intent e o comando startActivity(), passando esse Intent.
Agora uma pergunta: o que será que acontece uma vez que apertarmos a tecla voltar do dispositivo, tendo essa Activity nova à frente? Se você tiver executando o exemplo e tiver tido essa curiosidade, verá que a tela se fechou e voltamos a nossa tela de login, do jeito que a havíamos deixado. Esse é um bom momento para falarmos um pouco sobre o Back Stack.
Versão 5.3 - Todos os Direitos reservados