Я использую эту библиотеку MaterialSearchView в своем приложении для реализации Gmail, подобного поисковому представлению. Библиотека предоставила детали реализации, используя Activity. Я пробовал код внутри фрагмента, внося необходимые изменения.Android, использующий Fragment вместо активности для библиотеки
Для его реализации мы делаем что-то подобное от деятельности:
MaterialSearchView searchView = (MaterialSearchView) findViewById(R.id.search_view);
Но я использую фрагмент вместо так что я делаю:
searchView = (MaterialSearchView) getActivity().findViewById(R.id.search_view);
Все работает отлично, за исключением VoiceSearch , Библиотека реализует голосовой поиск, используя следующий код:
private void onVoiceClicked() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak an item name or number"); // user hint
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); // setting recognition model, optimized for short phrases – search queries
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1); // quantity of results we want to receive
if (mContext instanceof Activity) {
((Activity) mContext).startActivityForResult(intent, REQUEST_VOICE);
}
Как это сделать? mContext
в приведенном выше коде устанавливается внутри конструктора, как:
public MaterialSearchView(Context context) {
this(context, null);
}
Как я могу заставить его работать с фрагментом? Код для library
Что, собственно, не работает? – cybersam
Он не запускает действие для обработки голосовых действий, внутри onVoiceClicked() –