Я реализовал версию Google Searchable Dictionary , и у меня возникли некоторые проблемы.
Я реализую в MapView действие, в котором у меня есть базовый ItemizedOverlay, который я хочу найти. Я заменил данные на те же, что и на ItemizedOverlay, и все, кажется, запрашивает просто отлично.
Однако, когда я выбираю элемент поиска из списка, первоначальное намерение, которое порождало поисковое действие, кажется, обрабатывает событие, и новое намерение MapView порождает и делает то же самое (поэтому, если бы я нажал " кнопку "Назад", я возвращаюсь к дублирующемуся mapView).
Мой класс Mapview выглядит так:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_map);
initializeComponents();
addOverlays();
Intent intent = getIntent();
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
// handles a click on a search suggestion; launches activity to show word
int lat, lon;
Uri uri = intent.getData();
Cursor c = getContentResolver().query(uri, null, null, null, null);
try {
c.moveToFirst();
lat = Integer.parseInt(c.getString(2));
lon = Integer.parseInt(c.getString(6));
} finally {
c.close();
}
//this is the ItemizedOverlay that holds the building icons
buildingIcons.onTap(new GeoPoint(lat, lon), mapView);
Toast.makeText(this, "you searched for " + lat + ", " + lon, Toast.LENGTH_LONG).show();
}
}
Сумасшедшая вещь в том, что уведомление Toast работает просто отлично - оно дает мне широту / долготу точки (и да, я знаю, что индекс столбца - не лучший способ получить его). Любые идеи о том, почему создается второе намерение MapView?
Если вам это нужно, вот файл searchable.xml:
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/search_label"
android:hint="@string/search_hint"
android:searchSettingsDescription="@string/settings_description"
android:searchSuggestAuthority=".map.DictionaryProvider"
android:searchSuggestIntentAction="android.intent.action.VIEW"
android:searchSuggestIntentData="content://.map.DictionaryProvider/dictionary"
android:searchSuggestSelection=" ?"
android:searchSuggestThreshold="1"
android:includeInGlobalSearch="true"
>