Aprenda a programar para Android – Parte IV

20 Comentários

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:

  1. 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.
  2. 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.

Download: Link para o apk

Comentários

20

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Fernando Silva
    Fernando Silva

    Boas Francisco Franco, uma vez que estou a entrar no mundo das aplicações móveis, todos os exemplos e ajudas são bem vindas.

    Vou acompanhar os os teus tópicos sobre android com atenção!

    Cumprimentos,
    Fernando Silva

    1. Avatar de Christian Göllner

      Boas Fernando,

      só para esclarecer, fui eu que escrevi o artigo. O Francisco apenas o publicou por mim.

      Cumprimentos,
      Christian

      1. Avatar de Fernando Silva
        Fernando Silva

        Então obrigado aos dois!!!
        A quem escreveu e a quem publicou.

        😉

        Cumprimentos,
        Fernando Silva

      2. Avatar de Tiago
        Tiago

        Parabens Christian Göllner pelo artigo.

        Como fazes um layout idêntico ao “ASP Surfing News” aqueles estilos menus etc…
        Se me poderes orientar…
        Abraço

        1. Avatar de Christian Göllner

          Obrigado Tiago!

          É um bocado complicado explicar por aqui.

          A página principal é um LinearLayout vertical.
          Cada menu é um TextView que ocupa a largura do ecrã. As cores de fundo dos menus foram feitos a partir de estilos que defini em ficheiros xml.

          Link útil: http://developer.android.com/guide/topics/ui/themes.html

      3. Avatar de Ivo Barbosa
        Ivo Barbosa

        Olá Christian Göllner, não tens ai uns manuais para alguem que quer começar do nada? 😉 Sou programador web, mais propriamente programador php, não tenho nenhumas noçoes de android e java, gostava de me iniciar neste mundo.
        Se alguem pode ajudar agradecia.
        Obrigado
        Abraços.

        1. Avatar de Francisco Franco

          Olá Ivo. Tens no início do artigo links para as várias partes desta rúbrica onde podes aprender como começar do 0 a programar para Android. Claro que ajuda teres bases em Java, mas isso também encontras livros que te ajudem nesse capítulo. Se sabes PHP então Java não há de ser nenhum bicho de 7 cabeças pois já tens alguma lógica 😉

          Abraço

          1. Avatar de Ivo Barbosa
            Ivo Barbosa

            Francisco Franco aconselhas algum livro em especifico?
            Já vi um pouco de Java e achei um pouco confuso.
            Abraços

        2. Avatar de Christian Göllner

          Olá Ivo,

          se perceberes bem Inglês, tens um “curso” da Google para ajudar as pessoas a iniciarem-se no desenvolvimento de aplicações para Android.

          http://developer.android.com/training/index.html

          Tem muito conteúdo de qualidade.

          Abraço

          1. Avatar de Ivo Barbosa
            Ivo Barbosa

            Olá Christian Göllner,
            Não sou nenhum pro ou expert em inglês mas safo-me bem.
            Desconhecia esse link, tenho que perder algum tempo e ler isso.
            Tens conhecimento de algo do género mas tuga com exemplos de código?
            Abraços

        3. Avatar de KnoKer
          KnoKer

          eu comecei a programar para android através destes tutoriais,
          http://www.youtube.com/watch?v=SUOWNXGRc6g
          o gajo tem cerca de 200 tuts sobre android, explica bem, mas ajuda teres um background de linguagens OO, se estás habituado a php5 não vais ter grandes problemas….

          Cumprimentos

    2. Avatar de Francisco Franco

      Boas Fernando. Como disse o Christian e muito bem eu apenas o publiquei. Espero que goste deste artigo sobre programação para Android e que lhe seja útil.

  2. Avatar de MM
    MM

    Boas pessoal, e um tutorial para a aplicação interagir com uma base de dados mysql alojada num web server não haverá? Dava jeito 😛

    1. Avatar de Christian Göllner

      MM,

      não sei se o que estás à procura é algo nativo do Android mas este não tem nenhum componente integrado para interagir com bases de dados MySql, apenas SQLite e têm que ser bases de dados locais(acho eu).
      No entanto há o famoso JDBC para o Java (Java Database Connectivity) que permite interagir com bases de dados, seja MySQL, Oracle, etc. Isso funciona em qualquer programa feito em Java, incluindo Android.
      Portanto o que estarias a pedir seria mais “um tutorial para
      um programa feito em Java interagir com uma base de dados mysql alojada num webserver”. Há muito por aí se pesquisares no Google mas também se pode escrever um tutorial, com certeza. 😀

      1. Avatar de MM
        MM

        É isso mesmo 😛 Pois há, mas não encontro nada completo. Uma espécie de Tutorial for Dummies xD Fico à espera da escrita então 😛

    2. Avatar de Christian Göllner

      MM,

      não sei se te estás a referir a algo nativo, mas o Android não tem nenhum componente integrado para interagir com bases de dados MySql, apenas com SQLite e só bases de dados locais (acho eu). No entanto há o famoso JDBC (Java Database Connectivity) que é um componente para fazer interacção de programas em Java com bases de dados MySQL, Oracle, etc. Isso funciona em qualquer programa Java, logo também funciona em Android. Portanto acho que o que estarias mais a pedir seria “um tutorial para um programa em Java interagir com uma base de dados mysql alojada num web server”, o que se pode arranjar facilmente. 😀

  3. Avatar de André Almeida
    André Almeida

    Não percebi o passo do Manifest. Já o abri, adicionei mas acho que não está bem pois não consigo correr o projeto. Dá-me erro. Alguma ajuda?

    cumps

    ERRO:
    [2013-02-22 15:21:11 – SendText] No Launcher activity found!
    [2013-02-22 15:21:11 – SendText] The launch will only sync the application package on the device!

    1. Avatar de MM
      MM

      Se estiveres à vontade com inglês vê os videos neste site: http://thenewboston.org/list.php?cat=6

      Muito bons.

      1. Avatar de André Almeida
        André Almeida

        Obrigado, vou ver 😉

  4. Avatar de Luís Nabais

    Ando à procura duma coisa, gostava de saber se alguém daqui me pode ajudar.
    Gostava dum tutorial em vídeo completo de alguém a desenvolver uma aplicação Android para Android 4.x, algo decente, tipo um task manager, algo com um mínimo de complexidade.
    É que aprender tipo “isto faz isto, isto faz aquilo”, sem objectivo, não me entusiasma nada.

    Alguém sabe de alguns bons tutorials desse tipo? Algo ao estilo dos do newboston, mas para Android 4.x?

    Obrigado