segunda-feira, 10 de junho de 2013

Caminhando - 1ª parte, Uma nova ação.

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" />
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
}
Isto requer que você importe a classe View :
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 )
·         Ter View como o unico parametro (que sera o  View que foi clicado)
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);
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";
   
...
}

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