Monteiro João Bosco - Google Android: crie aplicações para celulares e tablets стр 10.

Шрифт
Фон

2.4

Construção da nossa primeira Intent

Agora que já sabemos utilizar as

Intents e compreendemos os

Intent

Filters, vamos tirar proveito disto alterando o nosso HelloWorld 2.0 para incluir uma activity que irá responder a uma intent implícita.

A ideia é que na nossa aplicação de exemplo existam duas atividades: a

MainActivity, que continuará sendo utilizada para o usuário informar o seu

nome, e a SaudacaoActivity, que será responsável apenas por exibir uma sau-

dação para o usuário a partir das informações contidas na intent. Ela também

possuirá uma categoria própria e responderá a uma ação específica. A figura 2.3 demonstra a ideia.

40

Casa do Código

Capítulo 2. Entenda o funcionamento do Android

Figura 2.3: HelloWorld utilizando intents

Primeiramente, devemos criar um novo XML de layout que será utilizado pela

SaudacaoActivity para exibir a mensagem de saudação para o usuário. Para isto, acesse o menu File > New > Android XML Layout File. Informe o nome

do arquivo como saudacao, não é necessário alterar nenhuma outra informação,

como na figura 2.4:

41

2.4. Construção da nossa primeira Intent

Casa do Código

Figura 2.4: Criando um novo XML de layout

Neste novo layout incluiremos apenas um TextView para mostrar a saudação

ao usuário. O código ficará assim:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/saudacaoTextView"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

42

Casa do Código

Capítulo 2. Entenda o funcionamento do Android

</LinearLayout>

Com o layout pronto, vamos criar uma nova Activity para a aplicação, através

do menu File > New > Class. Na caixa de diálogo apresentada, selecione o pacote br.com.casadocodigo.helloandroid e para o nome da classe informe

SaudacaoActivity, conforme a figura 2.5 e pressione Finish.

Figura 2.5: Criando uma nova classe

Podemos então criar a nossa SaudacaoActivity, que herdará de Activity:

43

2.4. Construção da nossa primeira Intent

Casa do Código

public class SaudacaoActivity extends Activity {

// teremos que implementar o método onCreate

}

Na implementação do método

onCreate, teremos a chamada para

super.onCreate e em seguida precisamos indicar qual o layout será utilizado,

que no nosso caso será o layout saudacao:

public class SaudacaoActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.saudacao);

}

}

Podemos definir constantes para identificar o extra que a intent possui, pois vamos utilizá-la nos métodos onCreate:

public class SaudacaoActivity extends Activity {

public static final String EXTRA_NOME_USUARIO =

"helloandroid.EXTRA_NOME_USUARIO";

@Override

protected void onCreate(Bundle

savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.saudacao);

}

}

Com isso, podemos recuperar a

Intent, que nos foi passada através do

método

getIntent, e checar se existe um extra com o identificador defi-

nido, ou seja, se a

Intent possui o nome do usuário para a exibição da

saudação.

Caso exista um extra, obtemos o seu valor utilizando o método

intent.getStringExtra(EXTRA_NOME_USUARIO). Se a intent fornecida

não possui nenhum extra, então apresentamos um aviso para o usuário.

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

44

Casa do Código

Capítulo 2. Entenda o funcionamento do Android

setContentView(R.layout.saudacao);

TextView saudacaoTextView =

(TextView) findViewById(R.id.saudacaoTextView);

Intent intent = getIntent();

if (intent.hasExtra(EXTRA_NOME_USUARIO)) {

String saudacao = getResources().getString(R.string.saudacao);

saudacaoTextView.setText(saudacao + " " +

intent.getStringExtra(EXTRA_NOME_USUARIO));

} else {

saudacaoTextView.setText("O nome do usuário não foi informado");

}

}

Em seguida, precisaremos alterar o método

surpreenderUsuario da

MainActivity para deixar de exibir a saudação e criar a Intent que acionará

a nova atividade. Com isso, vamos ter que definir também a ação e a categoria da atividade que acabamos de criar. Podemos fazer isso definindo mais duas constantes na classe SaudacaoActivity:

public class SaudacaoActivity extends Activity {

public static final String EXTRA_NOME_USUARIO =

"helloandroid.EXTRA_NOME_USUARIO";

// As duas novas constantes

public static final String ACAO_EXIBIR_SAUDACAO =

"helloandroid.ACAO_EXIBIR_SAUDACAO";

public static final String CATEGORIA_SAUDACAO =

"helloandroid.CATEGORIA_SAUDACAO";

// método onCreate

}

No método surpreenderUsuario, criamos uma nova Intent com a ação

desejada e nela adicionamos a categoria definida anteriormente. Em seguida, incluí-

mos como informação extra o valor informado no EditText. E por fim, iniciamos uma nova activity passando a Intent criada.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке