La actividad de búsqueda de Android no comienza
Mi cuadro de búsqueda no se muestra cuando presiono el botón de búsqueda en mi teléfono Android. Lo que quiero hacer es hacer una ASyncTask (o tarea en segundo plano) para obtener una respuesta JSON de una serie de cadenas (nombres de personas), buscar a través del resultado y mostrarlo al usuario utilizando la misma funcionalidad de búsqueda que tiene IMDB. Actualmente, estoy usando una matriz de cadenas para probar mi respuesta / solicitud de búsqueda. ¿Algunas ideas
Recibo las siguientes advertencias cuando presiono el botón de búsqueda (pero creo que esto no está relacionado con mi problema):
04-21 03:35:23.767: WARN/KeyCharacterMap(12946): Can't open keycharmap file 04-21 03:36:48.978: WARN/KeyCharacterMap(12999): Error loading keycharmap file '/system/usr/keychars/qtouch-touchscreen.kcm.bin'. hw.keyboards.65537.devname='qtouch-touchscreen' 04-21 03:37:21.408: WARN/KeyCharacterMap(2576): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
El error a continuación se ha solucionado por cortesía de @Heiko Rupp:
04-21 03:17:51.994: WARN/SearchableInfo(1293): Invalid searchable metadata for com.redacted/.SearchActivity: Search label must be a resource reference.
SearchActivity.java:
package com.redacted;
import android.app.ListActivity;
import android.app.SearchManager;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class SearchActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_results);
handleIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
showResults(query);
}
}
private void showResults(String q) {
String[] listItems = { "test", "my", "search", "list" };
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listItems));
}
}
searchable.xml:
<?xml version="1.0" encoding="utf-8"?>
<searchable
xmlns:android="http://schemas.android.com/apk/res/android"
android:searchButtonText="Search"
android:label="Redacted"
android:hint="Redacted"
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer">
</searchable>
Part of Manifest Manifest.xml (los metadatos están dentro de la etiqueta, por lo que es global):
<activity android:launchMode="singleTop" android:name="SearchActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
<meta-data android:name="android.app.default_searchable"
android:value="SearchActivity" />
</application>
search_results.xml:
<?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">
<ListView android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/list"></ListView>
</LinearLayout>