Após completar a
lição anterior, você tem um aplicativo que mostra a ação (tela única) com um
campo texto e um botão. Nesta lição, você irá adicionar algum código ao MainActivity que inicia uma nova ação quando o
usuário clica sobre o botão enviar.
Respondendo ao botão enviar
Para responder ao evento de clique no botão enviar, abra o arquivo de
esboço activity_main.xml e adicione o
atributo android:onClick no elemento <Button> .
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send"
android:onClick="sendMessage" />
O valor de atributo android:onClick, "sendMessage", é o nome do método
em sua ação que o sistema chama quando o usuário clica no botão.
Abra a classe MainActivity (localizado no diretório de projeto src/) e adicione o método
correspondente:
/** Called
when the user clicks the Send button */
public void sendMessage(View view) {
// Do something in response to button
}
public void sendMessage(View view) {
// Do something in response to button
}
import android.view.View;
Dica: No Eclipse, pressione Ctrl + Shift + O para importer as classes ausentes.
Para que o sistema faça a equivalencia deste metodo com o metodo dado
para android:onClick, a assinatura deve
ser igual a mostrada. Especificamente o método deve:
·
Ser publico
·
Ter um retorno de valor vazio(void )
A seguir, voce ira preencher este metodo para ler o conteudo do campo
texto e entregar o texto para outra ação.
Construir a intenção(Intent)
Uma Intent é um objeto que fornece a
junção em tempo de execução de componentes separados(como duas ações). O Intent representa no aplicativo a “intenção
de fazer algo”, Voce pode usar intenção em uma grande variedade de tarefas,
mais comumente é usado para criar outra atividade..
Dentro do metodo sendMessage(), cria uma Intent para iniiciar a ação chamada DisplayMessageActivity:
Intent intent = new Intent(this, DisplayMessageActivity.class);
O construtot usado pega dois parametros:
·
Um Context como o primeito parametror (this é usado por que da classe Activity é uma subclasse de Context)
·
O componeten de aplicativo Class ao qual o sistema deve entregar Intent (neste caso a ação deverá ser
iniciada)
Enviando a intenção para outros aplicativos
A intenção criada
para esta lição é o que pode ser considerada como intenção explicita, por que Intent especifica exatamente qual
componente a intenção deve ser entregue. De qualquer forma, intenções podem ser
implícita, neste caso Intent não especifica qual o
componente desejado, mas permite ao aplicativo instalado no dispositivo
responder para a intenção até satisfazer as especificações de meta-datos para a
ação desejada no vários parâmetros de Intent. Para mais informações leia sobre a classe em Interagindo com outros aplicativos.
Nota: A referencia a DisplayMessageActivity irá trazer um erro se voce estiver usando uma IDE como o Eclipse,
por causa da classe não existir ainda, Ignore esse erro por enquanto, em breve
você irá criar esta classe.
Uma intenção não so permite voce começar outra ação, como pode carregar
um combo de dados para a ação também. Dentro do método sendMessage(, use findViewById() para pegar o element EditText e adcionar o valor do texto
para a inteção:
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);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
Nota: Voce agora precisa importar a confirmação para android.content.Intent e android.widget.EditText. Voce irá definie
a constante EXTRA_MESSAGE em breve.
Um Intent pode carregar uma coleção de tipos de
dados como pares de valores chaves chamados de extras. O método putExtra()pega o nome da chave como o primeiro parametro e o valor como segundo parâmetro.
Em ordem para que a proxima ação pesquise o dado extra, você deve
definir a chave para sua intenção extra usando um constante publica. Portanto
adicione a definição EXTRA_MESSAGE no topo da classe MainActivity :
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.meuprimeiroap.MESSAGE";
...
}
public final static String EXTRA_MESSAGE = "com.example.meuprimeiroap.MESSAGE";
...
}
Geralmente é uma boa pratica definir chaves para intenções extras usando
o nome do pacote de aplicativo como prefixo. Isto assegura que será único, no
caso de seu aplicativo interagir com outras aplicações.
Nenhum comentário:
Postar um comentário