Free Capítulo 03 - Activity

Activity

Uma Activity ( Atividade ) é um componente responsável por promover uma tela para que os usuários possam interagir para realizar um objetivo, seja discar um número de telefone, enviar um e-mail, tirar fotos, etc. Ao criar uma Acitity você cria uma classe java + um xml que representam uma abstração de uma interface do Android

Exemplo de um App com duas Activity

Exemplo de um App com duas Activities. No exemplo a seguir criamos um App que contém duas Activities

Observação: Lembre-se de usar o Wizard do Android Studio para criar suas Activities, pois se você criar manualmente talvez não funcione.

MainActivity.java



package com.mentorandroid.activityhello;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void segundaOnClick(View view) {
        // Instancia um objeto do tipo intent para chamar outra Activity no caso
        // Segunda Activity
        Intent intent = new Intent(MainActivity.this, SegundaActivity.class);
        // Chama a funcao que ira abrir a Activity
        startActivity(intent);

    }
}

Neste arquivo temos um XML do layout da sua Activity. Neste exemplo temos apenas um Hello World e um Button que vai chamar a Segunda Activity activity_main.xml
1     < xml version="1.0" encoding="utf-8"?> 
2    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
3        xmlns:tools="http://schemas.android.com/tools" 
4        android:layout_width="match_parent" 
5        android:layout_height="match_parent" 
6        android:paddingBottom="@dimen/activity_vertical_margin" 
7        android:paddingLeft="@dimen/activity_horizontal_margin" 
8        android:paddingRight="@dimen/activity_horizontal_margin" 
9        android:paddingTop="@dimen/activity_vertical_margin" 
10       tools:context="com.mentorandroid.activityhello.MainActivity"> 
11       <TextView 
12           android:layout_width="wrap_content" 
13           android:layout_height="wrap_content" 
14           android:text="Hello World!" 
15           android:id="@+id/textView" /> 
16       <Button 
17           android:layout_width="wrap_content" 
18           android:layout_height="wrap_content" 
19           android:text="Segunda Activity" 
20           android:id="@+id/button" 
21           android:layout_below="@+id/textView" 
22           android:layout_alignParentLeft="true" 
23           android:layout_alignParentStart="true" 
24           android:layout_marginTop="80dp" 
25           android:onClick="segundaOnClick" /> 
26   </RelativeLayout>
SegundaActivity.java Neste Arquivo temos nossa segunda Activity que foi criada no Wizard, você pode perceber que código fonte dela é bem parecido com código da MainActivity.java

package com.mentorandroid.activityhello;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class SegundaActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_segunda);
    }
}

activity_segunda.xml

1    <?xml version="1.0" encoding="utf-8"?> 
2    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
3        xmlns:tools="http://schemas.android.com/tools" 
4        android:layout_width="match_parent" 
5        android:layout_height="match_parent" 
6        android:paddingBottom="@dimen/activity_vertical_margin" 
7        android:paddingLeft="@dimen/activity_horizontal_margin" 
8        android:paddingRight="@dimen/activity_horizontal_margin" 
9        android:paddingTop="@dimen/activity_vertical_margin" 
10       tools:context="com.mentorandroid.activityhello.SegundaActivity"> 
11       <TextView 
12           android:layout_width="wrap_content" 
13           android:layout_height="wrap_content" 
14           android:text="Segunda Activity" /> 
15   </RelativeLayout> 
16    
17   

Classe Intent

A classe Intent está presente em todos os locais e representa uma mensagem da aplicação para Sistema Operacional do Android. A classe android.content. Intent pode ser entendida como intenções ou ações que aplicação deseja fazer como, por exemplo, abrir uma nova Activity, abrir o browser com uma url desejada, ligar para um número desejado dentre outras coisas. O exemplo feito anteriormente utilizamos esta classe para chamar uma nova Activity.

O Exemplo de código abaixo abre uma url no browser padrão do Android:

// Instancia um objeto do tipo intent 
Uri uri = Uri.parse("http://www.mentorandroid.com");

Intent intent = new Intent (Intent.ACTION_VIEW, uri);

startActivity(intent);

Este outro exemplo abre uma activity

// Instancia um objeto do tipo intent para chamar outra Activity no caso
Intent intent = new Intent(MainActivity.this, SegundaActivity.class);

// Chama a funcao que ira abrir a Activity
startActivity(intent);

Durante todo o curso vamos usar este recurso e instaciar a classe intent. Em breve vamos descrever como passar parâmetros via intent de uma Activity para outra.

Confirmação de termino do capítulo e dúvidas

Para você iniciar o próximo capítulo é necessário finalizar o atual. Além disso, é importante que não tenha ficado nenhuma dúvida.