segunda-feira, 24 de janeiro de 2011

Usando tecla (diálogo) de busca

Olá povo,

Ontem estava eu deitadão assitindo televisão quando chega minha digníssima esposa e me solta essa pérola: "Ei seu blog está desatualizado. A última postagem foi do começo do mês...". Sendo assim, cá estou para mais um post :)

Hoje vou mostrar pra vocês, como utilizar o botão de busca na sua aplicação, que é padrão em todos os na maioria dos aparelhos Android. Esse botão permite que você implemente a funcionalidade de busca de uma maneira padrão à do sistema operacional.

Crie no seu projeto um arquivo chamado busca.xml dentro do diretório res/xml. Nesse arquivo ficarão as configurações do diálogo de busca:


<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/app_hint" >
</searchable>

Notem que no arquivo acima, estamos usando duas strings que devem estar definidas no arquivo /res/values/strings.xml. Tentei usar valores hard coded e não funcionou.

Em seguida, devemos informar no AndroidManifest.xml que a atividade tratará o botão de busca. Para isso, devemos adicionar um IntentFilter com a ação android.intent.action.SEARCH e o meta-data passando nosso XML criado acima:

<activity android:name=".MinhaAtividade" >
<intent-filter>
<action
android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/busca"/>
</activity>


Feito isso, basta tratar a Intent com a busca. Coloque o código abaixo no método onCreate() da sua Activity. Caso não queira que seja aberta uma nova instância da Activity a cada nova chamada a tela de busca, marque-a no AndroidManifest.xml como android:launchMode="singleTop" e trate o evento de busca no método onNewIntent().

Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
//faça sua busca com a variável query
}



Mais informações aqui.

4br4ç05,
nglauber

Um comentário:

Henrique Lobo disse...

Nelson,

Bacana o post. Só vale lembrar que nem todos os aparelhos tem o botão de search, o X10 é um exemplo.