У меня есть поиск обработки активности ( ACTIVITY_1 ), который отлично работает, когда я использую поиск (с помощью кнопки ПОИСК на телефоне) в / из этой операции.
Однако, когда я использую поиск из другого действия ( ACTIVITY_2..x ) путем реализации onNewIntent
и пересылаю строку запроса в мой класс Search_Activity.class ( ACTIVITY_1 )
@Override
protected void onNewIntent(Intent intent) {
Log.i(TAG, "onNewIntent()");
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
Log.i(TAG, "===== Intent: ACTION_SEARCH =====");
Intent myIntent = new Intent(getBaseContext(), Search_Activity.class);
myIntent.setAction(Intent.ACTION_SEARCH);
myIntent.putExtra(SearchManager.QUERY, intent.getStringExtra(SearchManager.QUERY));
startActivity(myIntent);
}
}
сначала всегда останавливается ACTIVITY_2 , а затем переходит к onCreate () из ACTIVITY_2 .
- Почему он воссоздает мой ACTIVITY_2 , когда он уже существует и не переходит в onNewIntent напрямую?
- Есть ли другой способ перенаправления поисковых запросов непосредственно на ACTIVITY_1 ? Например, через настройку в Manifest.xml
- Можно ли вообще перенаправлять все поисковые запросы на ACTIVITY_1 , даже не вводя
onNewIntent
во всех других действиях?
В настоящее время я должен поставить <intent-filter>
в каждое отдельное действие, чтобы «активировать» там свой пользовательский поиск и затем перенаправить запрос в действие, которое обрабатывает поиск через onNewIntent
(как показано выше).
<activity android:name=".Another_Activity"
android:theme="@style/MyTheme">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>