Quando concluir a lição anterior, você terá um app que exibe
uma atividade que consiste em apenas uma tela, com um campo de texto e um botão Send. Nesta
lição, você adicionará código à MainActivity
para iniciar uma nova atividade para exibir uma
mensagem quando o usuário tocar no botão Send.
Responder ao botão "Send"
Siga as etapas a seguir para adicionar um método à classe MainActivity
chamada ao tocar no botão
Send:
No arquivo app > java > com.example.myfirstapp > MainActivity, adicione o stub de método
sendMessage()
a seguir:Kotlin
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } /** Called when the user taps the Send button */ fun sendMessage(view: View) { // Do something in response to button } }
Java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** Called when the user taps the Send button */ public void sendMessage(View view) { // Do something in response to button } }
Talvez seja exibido um erro, porque o Android Studio não pode resolver a classe
View
usada como argumento do método. Para limpar o erro, clique na declaraçãoView
, coloque o cursor sobre ela e pressione Alt+Enter ou Option+Enter no Mac, para executar uma correção rápida. Se um menu for exibido, selecione Import class.- Retorne ao arquivo activity_main.xml para chamar o método com o botão:
- Selecione o botão no Layout Editor.
- Na janela Attributes, localize a propriedade onClick e selecione sendMessage [MainActivity] na lista suspensa.
Agora, ao tocar no botão, o sistema chamará o método
sendMessage()
.Observe os detalhes desse método. Eles são necessários para que o sistema reconheça o método como compatível com o atributo
android:onClick
. Especificamente, o método tem as seguintes características: - A seguir, preencha esse método para ler o conteúdo do campo de texto e enviar esse texto a outra atividade.
Criar uma intent
Um Intent
é um objeto que
fornece vínculos de tempo de execução entre componentes separados, como duas atividades. O
Intent
representa a
intenção do app de fazer algo. Você pode usar intents para uma ampla variedade de tarefas, mas, nesta lição, a
intent iniciará outra atividade.
Em MainActivity
, adicione a constante EXTRA_MESSAGE
e o código
sendMessage()
, conforme mostrado aqui:
Kotlin
const val EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE" class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } /** Called when the user taps the Send button */ fun sendMessage(view: View) { val editText = findViewById<EditText>(R.id.editTextTextPersonName) val message = editText.text.toString() val intent = Intent(this, DisplayMessageActivity::class.java).apply { putExtra(EXTRA_MESSAGE, message) } startActivity(intent) } }
Java
public class MainActivity extends AppCompatActivity { public static final 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 taps the Send button */ public void sendMessage(View view) { Intent intent = new Intent(this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.editTextTextPersonName); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } }
É provável que o Android Studio encontre erros Cannot resolve symbol novamente. Para limpar os erros, pressione Alt+Enter ou Option+Return no Mac. Suas importações vão ficar assim:
Kotlin
import androidx.appcompat.app.AppCompatActivity import android.content.Intent import android.os.Bundle import android.view.View import android.widget.EditText
Java
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.EditText;
Ainda há um erro para DisplayMessageActivity
, mas isso não é um problema. Você o corrigirá na
próxima seção.
Veja o que está acontecendo em sendMessage()
:
O construtor do
Intent
usa dois parâmetros, umContext
e umClass
.O parâmetro
Context
é usado primeiro porque a classeActivity
é uma subclasse deContext
.Nesse caso, o parâmetro
Class
do componente do app, ao qual o sistema envia oIntent,
que, nesse caso, é a atividade a ser iniciada.O método
putExtra()
adiciona o valor deEditText
à intent. UmaIntent
pode carregar tipos de dados como pares de chave-valor chamados de extras.Sua chave é uma constante
EXTRA_MESSAGE
pública porque a próxima atividade usará a chave para recuperar o valor do texto. É recomendável definir chaves para intents extras com o nome do pacote do app como prefixo. Isso garante que as chaves sejam únicas caso seu app interaja com outros.- O método
startActivity()
inicia uma instância daDisplayMessageActivity
especificada pelaIntent
. Em seguida, você precisa criar essa classe.
Criar a segunda atividade
Para criar a segunda atividade, siga as etapas a seguir:
- Na janela Project clique com o botão direito do mouse na pasta app e selecione New > Activity > Empty Activity.
- Na janela Configure Activity, insira "DisplayMessageActivity" em Activity Name. Deixe todas as outras propriedades definidas como padrão e clique em Finish.
O Android Studio faz três coisas automaticamente:
- Cria o arquivo
DisplayMessageActivity
. - Cria o arquivo de layout
activity_display_message.xml
, que corresponde ao arquivoDisplayMessageActivity
. - Adiciona o elemento
<activity>
se necessário emAndroidManifest.xml
.
Se você executar o app e tocar no botão na primeira atividade, a segunda atividade será iniciada, mas estará vazia. Isso ocorre porque a segunda atividade utiliza o layout vazio fornecido pelo modelo.
Adicionar uma visualização de texto

A nova atividade inclui um arquivo de layout vazio. Siga estas etapas para adicionar uma visualização de texto ao local em que a mensagem aparece:
- Abra o arquivo app > res > layout > activity_display_message.xml.
- Clique em Enable Autoconnection to Parent
na barra de ferramentas. Isso habilita a conexão automática. Veja a Figura 1.
- No painel Palette, clique em Text, arraste uma TextView para o layout e solte-a próximo ao centro da parte superior do layout para que ela se encaixe na linha vertical exibida. O Autoconnect adiciona limitações esquerda e direita para colocar a visualização no centro horizontal.
- Crie mais uma restrição do topo da visualização de texto para o topo do layout, de forma que ela apareça conforme mostrado na figura 1.
Opcionalmente, faça ajustes no estilo do texto expandindo textAppearance no painel Common Attributes da janela Attributes e altere atributos, como textSize e textColor.
Exibir a mensagem
Nesta etapa, você modificará a segunda atividade para exibir a mensagem que foi transmitida pela primeira.
Em
DisplayMessageActivity
, adicione o seguinte código ao métodoonCreate()
:Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_display_message) // Get the Intent that started this activity and extract the string val message = intent.getStringExtra(EXTRA_MESSAGE) // Capture the layout's TextView and set the string as its text val textView = findViewById<TextView>(R.id.textView).apply { text = message } }
Java
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_message); // Get the Intent that started this activity and extract the string Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); // Capture the layout's TextView and set the string as its text TextView textView = findViewById(R.id.textView); textView.setText(message); }
Pressione Alt+Enter ou Option+Return no Mac para importar as outras classes necessárias:
Kotlin
import androidx.appcompat.app.AppCompatActivity import android.content.Intent import android.os.Bundle import android.widget.TextView
Java
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView;
Adicionar navegação para cima
Todas as telas que não são o ponto de entrada principal, ou seja, que não são a tela inicial, precisam oferecer uma navegação que direcione o usuário à tela do pai lógico na hierarquia do app. Para fazer isso, adicione um botão Up na barra de apps.
Para adicionar um botão Up, é necessário declarar qual atividade é o pai lógico no arquivo
AndroidManifest.xml
.
Abra o arquivo em app > manifests > AndroidManifest.xml, localize a tag
<activity>
para DisplayMessageActivity
e a substitua-a pelo
seguinte:
<activity android:name=".DisplayMessageActivity" android:parentActivityName=".MainActivity"> <!-- The meta-data tag is required if you support API level 15 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity" /> </activity>
O sistema Android adicionará automaticamente o botão Up à barra de apps.
Executar o app
Clique em Apply Changes
na
barra de ferramentas para executar o app. Quando abrir, digite uma mensagem no campo de texto e toque em
Send para ver a mensagem na segunda atividade.

Pronto, você criou seu primeiro app Android!
Para continuar aprendendo as noções básicas de desenvolvimento de apps Android, volte para Criar seu primeiro app e siga os outros links fornecidos lá.