Nella mia domanda ho fatto il mio fornitore di contenuto ricercabile, che definisce la mia attività principale l'attività di ricerca predefinito sul mio manifesto.onSuggestionClick ricrea la mia attività
<activity
android:name="com.pt.application.MainActivity"
android:label="@string/title_activity_map"
android:launchMode="singleTop"
android:theme="@style/AppTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
Poi ho implementato la possibilità onSuggestionClick per aggiornare una mappa, basata su suggerimento cliccato dall'utente. La searchview è sulla barra delle azioni. Il problema è che quando l'utente fa clic su un suggerimento, in qualche modo l'attività viene ricreata (penso che OnPause e OnResume siano chiamati?). C'è un modo per evitare che ciò accada? Non voglio che la mia attività venga "ricreata" ogni volta che l'utente fa clic su un suggerimento.
Se è necessario più codice, si prega di chiedere. Grazie.
EDIT: Codice aggiunto
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search_hint"
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
android:voiceLanguageModel="web_search"
android:searchSuggestAuthority="com.pt.provider"
android:searchSuggestIntentData="content://com.pt.provider/busstop">
</searchable>
Sulla mia attività principale:
// Bind the Activity’s SearchableInfo to the Search View
searchView = (SearchView)menu.findItem(R.id.menu_search).getActionView();
this.setupSearchView();
private void setupSearchView()
{
// Use the Search Manager to find the SearchableInfo related
// to this Activity.
SearchManager searchManager =
(SearchManager)getSystemService(Context.SEARCH_SERVICE);
SearchableInfo searchableInfo =
searchManager.getSearchableInfo(getComponentName());
searchView.setSearchableInfo(searchableInfo);
searchView.setSubmitButtonEnabled(false);
searchView.setOnSuggestionListener(new OnSuggestionListener() {
@Override
public boolean onSuggestionSelect(int position) {
return false;
}
@Override
public boolean onSuggestionClick(int position) {
// Do things
return false;
}
});
}
Si prega di aggiungere il codice attività (o almeno tutte le parti interessate che hanno a che fare con la ricerca), così come la vostra ricercabile .xml. –
Aggiunto un po 'di codice. – Gravecard