Справка Android onSearchRequested (), возвращающая поисковый запрос к карте - PullRequest
0 голосов
/ 10 ноября 2011

У меня активность Map на довольно сложном макете.Таким образом, я не могу просто выполнить поиск с использованием функции поиска по карте в этом действии, не создав плохое окно (и для сбоя приложения мне потребуется onSearchRequested, чтобы использовать другой контекст, но он не принимает параметры.)

Я сделал еще одно прозрачное всплывающее действие над действием карты, которое сразу вызывает onSearchRequested() во время onCreate()

, дело в том, что когда я что-то набираю и нажимаю кнопку поиска, ничего не происходит.Панель поиска просто очищается, но остается на экране, как будто побуждает меня искать что-то снова.Я не знаю, что происходит с этим поисковым запросом, но мне нужно, чтобы он был передан в мой MapActivity.

Я подумывал сделать startActivityforResult и передать результат обратно из всплывающего поискового действия, но у меня все еще есть проблема:зная, как сохранить результат и сделав поиск, уйдите после нажатия поиска

Этот класс загружает окно поиска, вот и все.Он также имеет прозрачное изображение в пространстве между окном поиска и клавиатурой.Если пользователь щелкает там, действие завершается ()

public class PseudoMapSearchActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pseudomapsearch);

    onSearchRequested();

    findViewById(R.id.blankness).setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            finish();
        }

    });

    final SearchManager searchManager =
            (SearchManager) getSystemService(this.SEARCH_SERVICE);

    searchManager.setOnCancelListener(new SearchManager.OnCancelListener() {
          public void onCancel() {
              searchManager.setOnCancelListener(null);
              searchManager.stopSearch();
              finish();
          }
      });

    searchManager.setOnDismissListener(new SearchManager.OnDismissListener() {
          public void onDismiss() {
              searchManager.setOnCancelListener(null);
              searchManager.stopSearch();
              finish();
          }
      });

    //searchManager.getSearchableInfo(getCallingActivity());

    //searchManager.triggerSearch(query, launchActivity, appSearchData)

}

какую searchManager функцию мне следует вызвать, чтобы вывести из нее набранный пользователем и выбранный поисковый запрос

    <activity android:name=".PseudoMapSearchActivity" android:theme="@style/Theme.Transparent" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden">
        <meta-data android:name="android.app.default_searchable"
            android:value=".PseudoMapSearchActivity" />
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>

Поскольку всплывающая активность Pseudomapsearch не будет выполнять фактический поиск, а моя работа с картой будет выполнять всю фактическую обработку этих данных о местоположении, следует ли мне каким-то образом изменить манифест?

1 Ответ

2 голосов
/ 10 ноября 2011

Вы можете сохранить свой результат из startActivityForResult в объекте Android SharedPreferences.SharedPreferences замечательны, и их можно получить из любого места приложения или даже по всему миру.Хорошей идеей будет иметь класс для хранения констант для SharedPreferences, если у вас его нет.Документация для SharedPreferences отличная.Вот ссылка:

http://developer.android.com/reference/android/content/SharedPreferences.html

Надеюсь, это поможет!

Что касается получения данных из результата, вам необходимо использоватьметод называется onActivityResult.Затем используйте соответствующий код запроса.Документация для упомянутого метода может быть найдена здесь:

http://developer.android.com/reference/android/app/Activity.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...