Minicurso PET-EE UFRN
AULA 3
Nesta aula iremos continuar o exemplo anterior criando uma nova activity e adicionando ao botão um método que irá iniciar a mesma.
Começaremos criando o método de envio do botão
1. No Android Studio no diretório res/layout edite o arquivo
activity_my.xml.
2. Adicione ao elemento <Button> o atributo android:onClick vinculado ao método "sendMessage".
3. No diretório java/com.mycompany.myfirstapp, abra o arquivo MyActivity.java.
4. Crie um método no interior da classe MyActivity que representará a função "sendMessage()"
public void sendMessage (View view) { }
Para o método ser assignado ao atributo android:onClick o nome dado ao método precisa ter o mesmo nome passado ao atributo e, especificamente, o mesmo precisa:
• Ser public; • Ter valor de retorno void; • Ter view como único parâmetro de entrada.
Agora precisamos preencher o método criado para envio da mensagem. Sabemos que no sistema Android necessitaremos de um Intent para alternar entre os componentes de seu app; aqui criaremos um.
1. Em MyActivity.java, dentro do método "sendMessage()",
crie um Intent para iniciar uma activity chamada DisplayMessageActivity.
Intent intent = new Intent (this, DisplayMessageActivity.class);
nota: um erro pode aparecer no Android Studio pois a activity em questão ainda não foi criada, nesse caso basta ignorá-lo.
◦ O construtor usado aqui recebe dois parâmetros: O contexto como primeiro parâmetro (porque Activity é
subclasse de Context)
A classe do componente ao qual o sistema deve entregar o intent.
2. No inicio do arquivo, importe a classe Intent.
3. Dentro do método sendMessage() use findViewById() para acessar o elemento EditText.
EditText editText = (EditText) findViewById(R.id.edit_message);
4. Claro, não se esqueça de importar a classe EditText no topo do
arquivo.
5. Atribua o texto à uma variável local (nesse caso "message"), e
utilize o método putExtra() para adicionar seu valor de texto ao intent.
String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message);
Um Intent pode carregar tipos de dados como pares de valores-chave chamados extras. O método putExtra() recebe o nome da chave como primeiro parâmetro e o valor como segundo.
◦ 6. No topo da classe MyActivity adicione "EXTRA_MESSAGE"
da forma:
public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE"
ATENÇÃO: O nome do extra deve conter o prefixo do pacote ao qual está vinculado.
7. No método "sendMessage()", para completar o Intent, chame o método startActivity() passando o Intent criado no primeiro passo.
Exemplo: Fazer calculadora Android.
startActivity(intent);
O Android Studio já inclui os templates para o método onCreate() quando você cria uma nova activity. Podemos criar a activity automaticamente da seguinte forma:
1. No Android Studio, no diretório java, selecone o pacote
com.mycompany.myfirstapp, clique com o botão direito e selecione New > Activity > Blank Activity.
2. Na janela Choose options, preencha com os detalhes da activity:
Nome da Activity: DisplayMessageActivity (nesse caso o nome passado por você ao criar o Intent)
Nome do Layout: activity_display_message
Título: My Message
Hierarquia parental: com.mycompany.myfirstapp.MyActivity
Nome do Pacote: com.mycompany.myfirstapp
Clique finish.
3. Abra o arquivo DisplayMessageActivity.java. A classe já possui a implementação do método onCreate() requerido, iremos modificá-lo depois.
4. Remova o método onCreateOptionsMenu(), não será necessário nessa tela.
Agora iremos modificar a activity criada.
Toda e qualquer activity é chamada por um intent, independente de como o usuário navegou até lá. Os dados do mesmo pode ser acessados através do método "getIntent()".
1. No diretório java/com.mycompany.myfirstapp, edite o
arquivo DisplayMessageActivity.java.
2. No método onCreate(), remova a seguinte linha:
setContentView(R.layout.activity_display_message);
3. Receba o intent e atribua à uma variável local
4. Importe a classe Intent no topo do arquivo.
5. Extraia a mensagem entregue por MyActivity com o método getStringExtra().
Intent intent = getIntent();
String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE);
1. Dentro do método "onCreate()", crie um objeto TextView.
2. Defina o tamanho do texto e a mensagem
TextView textView = new TextView(this);
textView.setTextSize(40); textView.setText(message);
3. Então adicione o TextView raiz do layout da activity passando o mesmo para "setContentView()".
4. Importe as bibliotecas necessárias.
Agora rode seu aplicativo e veja se está tudo OK!
setContentView(textView);
Realização: PET Engenharia Elétrica UFRN
Autor: Rafael Cardoso Pereira
Contatos: Email: [email protected] Tel: 3215-3909