Is there a good solution to search in TabActivity for each activity in the tab accordingly?

I have a problem with navigation activity, the search works well.

The action hierarchy looks like this:

                              /  MyListActivityA -- ItemActivityA
MainActivity -- MyTabActivity -- MyListActivityB -- ItemActivityB
                              \  MyListActivityB -- ItemActivityC

Tabs TabActivity are created with purpose of a MyListActivity .

MyListActivities are declared in the manifest, as shown below:

    <activity
        android:name=".views.OrderListView">
        <intent-filter>
            <action
                android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable_orders" />
    </activity>

Each MyListActivity has its own SearchRecentSuggestionsProvider.

First resolved issue

MyListActivity MyTabActivity. MyTabActivity.
onCreate() MyListActivity .

Intent.ACTION_SEARCH

TabActivity , , :

    if(Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        intent.setClass(context, MyTabActivity.class);
        intent.setAction(MyTabActivity.ACTION_SEARCH_PROXY);

        Bundle appData = intent.getBundleExtra(SearchManager.APP_DATA);

        if(appData != null) {
            intent.putExtras(appData);
        }

        intent.putExtra(Constants.ACTIVITY_TYPE, activityType);
        intent.putExtra(ActivityTabView.EXTRA_SEARCH_QUERY, query);

        context.startActivity(intent);
        context.finish();
    }

MyListActivity

ActivityTabView.EXTRA_SEARCH_QUERY

. .

"" - . "" .

noHistory MyTabActivity:

<activity
    android:name=".views.MyTabActivity"
    android:noHistory="true">
</activity>

, , MyListActivityA ItemActivityA "" MainActivity. MyTabActivity - noHistory.

Android- TabActivity ?

+3
1

Back Stack. Android.

:

, , MyListActivity. , TabActivity , TabWidget. MyListActivity MyTabActivity (. ). MyTabActivity , MyListActivity.

, , . FLAG_ACTIVITY_CLEAR_TOP MyTabActivity.

if(Intent.ACTION_SEARCH.equals(intent.getAction())) {
    String query = intent.getStringExtra(SearchManager.QUERY);
    intent.setClass(context, MyTabActivity.class);
    intent.setAction(MyTabActivity.ACTION_SEARCH_PROXY);

    Bundle appData = intent.getBundleExtra(SearchManager.APP_DATA);

    if(appData != null) {
        intent.putExtras(appData);
    }

    intent.putExtra(Constants.ACTIVITY_TYPE, activityType);
    intent.putExtra(ActivityTabView.EXTRA_SEARCH_QUERY, query);

    //added line
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    context.startActivity(intent);
    context.finish();
}

.

+3

Source: https://habr.com/ru/post/1794185/


All Articles