android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName" >
<requestFocus />
</EditText>
Além disso, também teremos que incluir um botão, através do widget Button:
<Button
android:id="@+id/saudacaoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/surpreenda_me" />
Neste momento, para facilitar a criação do layout com estes novos elementos, iremos substituir o RelativeLayout por um LinearLayout que permite colocar
um widget por linha. Com estes novos elementos podemos montar a tela completa do novo Hello World que ficará como o código a seguir:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
26
Casa do Código
Capítulo 1. Construa sua primeira aplicação
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/titulo" />
<EditText
android:id="@+id/nomeEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName" >
<requestFocus />
</EditText>
<Button
android:id="@+id/saudacaoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/surpreenda_me" />
<TextView
android:id="@+id/saudacaoTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
Nos itens recém adicionados, repare que colocamos um atributo android:id
que é importante, pois posteriormente precisaremos referenciar e manipular esses componentes visuais. Também é necessário criar as strings que serão uti-
lizadas como o título, o rótulo do botão e também uma saudação. Nosso arquivo strings.xml deverá ficar assim:
<resources>
<string name="app_name">HelloAndroid</string>
<string name="hello_world">Hello Android!</string>
27
1.5. Hello World 2.0
Casa do Código
<string name="menu_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
<string name="titulo">Informe seu nome</string>
<string name="surpreenda_me">Surpreenda-me</string>
<string name="saudacao">Olá</string>
</resources>
Ao executarmos a aplicação novamente já perceberemos as mudanças realizadas
e o resultado será igual à imagem 1.22. Como ainda não programamos nenhuma
ação para o botão disponível na tela, ao pressioná-lo, nada de diferente acontece.
Para
obter
o
resultado
esperado,
criaremos
um
método
na
nossa
MainActivity que responderá a esta ação apresentando ao usuário uma
saudação personalizada. Então vamos configurar nosso
botão para que quando ele seja pressionado um método seja invocado. Para isso, utilizaremos o onClick:
<Button
android:id="@+id/saudacaoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/surpreenda_me"
android:onClick="surpreenderUsuario"/>
Informamos que o método a ser acionado após o clique do botão é o
surpreenderUsuario, através da propriedade onClick. Este método deve necessariamente ser público e receber como parâmetro um objeto do tipo View que é uma referência do botão que foi pressionado:
public void surpreenderUsuario(View v){
}
Nesse
método,
precisamos
modificar
o
conteúdo
do
widget
saudacaoTextView para que ele mostre o conteúdo informado no EditText.
Para isso, vamos precisar que a classe MainActivity possua referência para esses elementos. Vamos começar declarando atributos para o EditText e o TextView:
public class HelloAndroidActivity extends Activity {
private EditText nomeEditText;
private TextView saudacaoTextView;
28
Casa do Código
Capítulo 1. Construa sua primeira aplicação
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void surpreenderUsuario(View v) { }
//demais códigos existentes
}
No método onCreate, temos que conseguir as referências para os componen-
tes. Podemos fazer isso através do método findViewById:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.nomeEditText = (EditText) findViewById(R.id.nomeEditText);
this.saudacaoTextView = (TextView)
findViewById(R.id.saudacaoTextView);
}
Agora que já temos as referências para os objetos, podemos obter o valor di-
gitado pelo usuário, que está armazenado no EditText e atribuí-lo como con-
teúdo do TextView. Para realizar esta operação, basta implementar o método
surpreenderUsuario dessa forma:
public void surpreenderUsuario(View v) {
Editable texto = this.nomeEditText.getText();
this.saudacaoTextView.setText(texto);
}
Por fim, vamos adicionar a string saudacao, que está definida no arquivo