solas - búsqueda de Android no se abre
twitter no carga (1)
Hola, intento utilizar una actividad de búsqueda en mi aplicación, pero cuando se presiona el botón de búsqueda no sucede nada
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.test" android:versionCode="1" android:versionName="1.0.0" android:configChanges="keyboardHidden|orientation">
<uses-sdk android:minSdkVersion="7"/>
<application android:icon="@drawable/icon" android:label="Test">
<activity android:name=".Test" android:label="Test" android:debuggable="true" android:theme="@android:style/Theme.NoTitleBar" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".Searchable">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>
</activity>
<meta-data android:name="android.app.default_searchable" android:value=".Searchable"/>
</application>
</manifest>
Searchable.xml (res / xml / searchable.xml)
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="Search" android:hint="Perform Search">
</searchable>
Searchable.java (src / com / test / test / Searchable.java)
package com.test.test;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Intent;
import android.os.Bundle;
public class Searchable extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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);
}
}
}
TIA,
ng93
Su actividad de Searchable
tiene que hacer algo, y en realidad mostrar resultados.
Acabo de escribir uno según lo sugerido por una respuesta a una pregunta que hice ayer Intentando filtrar un ListView con runQueryOnBackgroundThread pero no ocurre nada, ¿qué me estoy perdiendo?
Consulte esta documentación sobre cómo integrarse con el soporte integrado de búsqueda: utilizando el cuadro de diálogo de búsqueda de Android y consulte este artículo sobre cómo ofrecer sugerencias a medida que el cliente escribe: Cómo agregar sugerencias personalizadas
Su clase de Searchable
necesita hacer un poco más después de obtener la cadena de consulta. Por ejemplo, en mi actividad después de obtener la cadena de consulta, hago esto:
showResults(query);
y ese método se ve así:
private void showResults(String query) {
// Load the list of countries based on the query
Cursor countryCursor = myDbHelper.getCountryList (query);
startManagingCursor (countryCursor);
// Hook up the query results to the list view
String[] from = new String[] {
WorldInfoDatabaseAdapter.KEY_COUNTRYCODE, WorldInfoDatabaseAdapter.KEY_COUNTRYNAME
};
int[] to = new int[] {
R.id.countryflag, R.id.countryname
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter (this,
R.layout.country_list_row, countryCursor, from, to);
adapter.setViewBinder (new FlagViewBinder ());
myCountryList.setAdapter (adapter);
myCountryList.setOnItemClickListener (new OnItemClickListener () {
@Override
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
String countryName = myDbHelper.getCountryByID (id);
if (countryName == null) {
new AlertDialog.Builder (SelectCountryActivity.this).setMessage (
"Internal error: Cannot find the country with id''" + id + "''.").show ();
return;
}
// Package up the country name to return
Intent newCountryIntent = new Intent (myCountryList.getContext (), WorldInfoActivity.class);
newCountryIntent.putExtra (WorldInfoActivity.KEY_SELECTED_COUNTRY, countryName);
startActivity (newCountryIntent);
startActivity (newCountryIntent);
finish ();
}
});
}
El miembro myDbHelper consulta mi base de datos para los países que tienen la cadena de consulta pasada y los muestra en una lista. Mi actividad tiene un diseño que se ve así:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
style="?pageBackground">
<TextView
android:id="@+id/selectdlgtitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/select_country_title"
style="?dlgTitle" />
<ListView
android:id="@+id/countrylist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"
android:padding="2px"/>
</LinearLayout>
Probablemente pueda prescindir de la llamada a setViewBinder
; lo necesito porque estoy traduciendo el campo de código de país en un icono de bandera.