Как я могу получить доступ к локализованным строкам в поставщике настраиваемых поисковых предложений?

У меня есть собственный поставщик поисковых предложений для SearchView моего приложения. Предложения отображаются нормально, но имена предложений жестко закодированы. Я хотел бы получить локализованные строки из моего файла strings.xml, но мне нужен доступ к контексту активности, которого нет в моей поисковой системе.

Мой поисковый провайдер сопоставляется с моим SearchView с помощью файла searchables.xml, как это рекомендовано в документации для разработчиков Android. Вот моя конфигурация с возможностью поиска:

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:hint="artist, track informations..."
    android:label="@string/app_name"
    android:queryAfterZeroResults="true"
    android:searchSuggestAuthority="com.example.testapp.providers.QuickSearchProvider"
    android:searchSuggestSelection=" ?"
    android:searchSuggestThreshold="3" />

...и вот собственно поисковый провайдер:

public class QuickSearchProvider extends SearchRecentSuggestionsProvider {

  public final static String AUTHORITY = "com.example.testapp.providers.QuickSearchProvider";
  public final static int MODE = DATABASE_MODE_QUERIES | DATABASE_MODE_2LINES;

  public QuickSearchProvider() {
    setupSuggestions(AUTHORITY, MODE);
  }

  public Cursor query(Uri uri, String[] projection, String sel,
      String[] selArgs, String sortOrder) {

      MatrixCursor cursor = new MatrixCursor(new String[] { 
          BaseColumns._ID,
          SearchManager.SUGGEST_COLUMN_TEXT_1,
          SearchManager.SUGGEST_COLUMN_TEXT_2,
          SearchManager.SUGGEST_COLUMN_ICON_1,
          SearchManager.SUGGEST_COLUMN_INTENT_ACTION});

      cursor.addRow(new Object[] { 0, "Plants", "Search Plants", android.R.drawable.ic_menu_search, Search.SEARCH_PLANTS_ACTION});
      cursor.addRow(new Object[] { 1, "Birds", "Search Birds", android.R.drawable.ic_menu_search, Search.SEARCH_BIRDS_ACTION });

      return new MergeCursor(new Cursor[] { cursor });
  }

}

Я хотел бы получить локализованные строки из моего файла строковых ресурсов для таких терминов, как «Растения» и «Птицы».

Как я могу это сделать?

Спасибо.


person Mridang Agarwalla    schedule 11.09.2012    source источник


Ответы (1)


Попробуйте что-то вроде:

Строковое значение = this.getContext().getResources().getString(R.string.Plants)

person Shamim Ahmmed    schedule 11.09.2012
comment
Блин, неужели все так просто?! - person Mridang Agarwalla; 11.09.2012