Skip to content

Most visited

Recently visited

navigation

Iniciar outra atividade

Após completar a lição anterior, você terá um aplicativo que exibe uma atividade (uma tela única) com um campo de texto e um botão. Nesta lição, você adicionará código a MainActivity que inicia uma nova atividade quando o usuário clica no botão Send.

Responder ao botão Send

  1. No arquivo res > layout > activity_main.xml, adicione o atributo android:onClick ao elemento <Button>, como mostrado abaixo:
    <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/button_send"
          android:onClick="sendMessage" />
        

    Este atributo informa ao sistema para chamar o método sendMessage() em sua atividade, sempre que um usuário clica no botão.

  2. No arquivo java > com.example.myfirstapp > MainActivity.java, adicione o stub de método sendMessage() como mostrado abaixo:
    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        /** Called when the user clicks the Send button */
        public void sendMessage(View view) {
            // Do something in response to button
        }
    }

    Para que o sistema combine esse método com o nome do método dado a android:onClick, a assinatura deve estar exatamente como mostrada. Especificamente, o método deve:

    • Ser público
    • Ter um valor de retorno vazio
    • Ter um View como o único parâmetro (esse será o View que foi clicado)

A seguir, você preencherá esse método para ler o conteúdo do campo de texto e enviar esse texto a outra atividade.

Criar um intent

Intent é um objeto que fornece vínculos em tempo de execução entre componentes separados (como duas atividades). O Intent representa uma “intenção de fazer algo” do aplicativo. Você pode usar os intents para uma ampla variedade de tarefas, mas, nesta lição, seu intent inicia outra atividade.

Em MainActivity.java, adicione o código mostrado abaixo para sendMessage():

public class MainActivity extends AppCompatActivity {
    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user clicks the Send button */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}

O Android Studio exibirá erros Não pode resolver símbolo porque este código faz referência a classes não importadas. Você pode resolver alguns deles com a funcionalidade “import class” do Android Studio, pressionando Alt + Enter (ou Option + Return no Mac). Suas importações devem terminar como segue:

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

Um erro para DisplayMessageActivity permanece, mas tudo bem; você vai corrigi-lo na próxima seção.

Há muita coisa acontecendo em sendMessage(), portanto vamos explicar o que está acontecendo.

O construtor Intent usa dois parâmetros:

O método putExtra() adiciona o valor de EditTextao intent. Uma Intent pode carregar tipos de dados como pares de valor-chave chamados de extras. Sua chave é uma EXTRA_MESSAGE pública constante porque a próxima atividade usa a chave para recuperar o valor de texto. É uma prática recomendada definir chaves para extras de intents usando o nome do pacote do aplicativo como prefixo. Isso garante que as chaves sejam únicas se o aplicativo interagir com outros.

O método startActivity() inicia uma instância da DisplayMessageActivity especificada pela Intent. Agora você precisa criar a classe.

Criar a segunda atividade

  1. Na janela Projeto, clique com o botão direito na pasta do app e selecione New > Activity > Empty Activity.
  2. Na janela Configurar Atividades, digite "DisplayMessageActivity" em Activity Name e clique em Finish

O Android Studio automaticamente faz três coisas:

Se você executar o aplicativo e clicar no botão Enviar na primeira atividade, a segunda atividade começa, mas está vazia. Isso ocorre porque a segunda atividade utiliza o layout vazio padrão fornecido pelo modelo.

Exibir a mensagem

Agora você vai modificar a segunda atividade para exibir a mensagem que foi passada pela primeira atividade.

  1. Em DisplayMessageActivity.java, adicione o seguinte código ao método onCreate():
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_display_message);
    
       Intent intent = getIntent();
       String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
       TextView textView = new TextView(this);
       textView.setTextSize(40);
       textView.setText(message);
    
       ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
       layout.addView(textView);
    }
  2. Pressione Alt + Enter (ou Option + Return no Mac) para importar classes que estejam faltando. Suas importações devem acabar como segue:
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.ViewGroup;
    import android.widget.TextView;
    

Há muitas coisas acontecendo aqui, portanto vamos explicar:

  1. A chamada getIntent() captura o intent que iniciou a atividade. Cada Activity é chamada por uma Intent, independentemente de como o usuário navegou até lá. A chamada getStringExtra() recupera os dados da primeira atividade.
  2. Você programaticamente cria um TextView e define seu tamanho e mensagem.
  3. Você adiciona a TextView ao layout identificado por R.id.activity_display_message. Você lança o layout para ViewGroup porque esta é a superclasse de todos os layouts e contém o método addView().

Observação: O layout XML gerado por versões anteriores do Android Studio pode não conter o atributo android:id. A chamada findViewById() falhará se o layout não tiver o atributo android:id. Neste caso, abra activity_display_message.xml e adicione o atributo android:id="@+id/activity_display_message" ao elemento do layout.

Agora, você pode executar o aplicativo. Quando ele abrir, digite uma mensagem no campo de texto e clique em Send. A segunda atividade substitui a primeira na tela, mostrando a mensagem que você inseriu na primeira atividade.

Isso é tudo, você criou seu primeiro aplicativo Android!

Para saber mais, siga o link abaixo para acessar a próxima lição.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a one-minute survey?
Help us improve Android tools and documentation.