Я хочу вызвать функцию у родителя активности поиска при нажатии на результат поиска. Как я могу это сделать? (Могу ли я передать ссылку родителя на операцию поиска для интерфейса? Или есть ли возможность начать поисковую деятельность для результата? Или можно начать поиск в родительской деятельности?)Функция вызова Android в родительском элементе SearchActivity
...
<activity
android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"
android:keepScreenOn="true"
android:theme="@style/AppTheme.NoActionBar">
<meta-data
android:name="android.app.default_searchable"
android:value=".search.SearchAllActivity"/>
<intent-filter>
<action android:name="android.intent.action.SEARCH"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
...
</intent-filter>
</activity>
...
<activity
android:name=".search.SearchAllActivity"
android:label="@string/title_search"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.SEARCH"/>
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
MainActivity запускает поиск. Поиск выполняется, и результаты отображаются в SearchAllActivity.
Edit: Одно из очевидных решений (к очевидным для меня) было бы установить setOnQueryTextListener и запустить поиск вручную:
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Intent intent = new Intent().setClass(mContext, SearchAllActivity.class);
intent.putExtra("query", mSearchView.getQuery());
startActivityForResult(intent, 42);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
В SearchAllActivity:
private void handleIntent(Intent intent) {
String query = intent.getCharSequenceExtra("query").toString();
SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this, suggestionProvider.AUTHORITY, suggestionProvider.MODE);
suggestions.saveRecentQuery(query, null);
runSearch(query);
}
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
}
Но теперь suggestionsprovider не Работающий
, что это то, что я хотел бы сделать, но проблема заключается в том, что SearchActivity запускается, когда пользователь нажал ввести в searchview. Поэтому я не знаю, как/когда/где начать свою деятельность с помощью функции startActivityFoResult (намерение, запрос) – HappyCoder