6

私のアプリケーションでは、コンテンツ プロバイダーを検索可能にし、メイン アクティビティをマニフェストのデフォルトの検索アクティビティとして定義しました。

    <activity
            android:name="com.pt.application.MainActivity"
            android:label="@string/title_activity_map"
            android:launchMode="singleTop"
            android:theme="@style/AppTheme" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>

            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />
        </activity>

次に、ユーザーがクリックした提案に基づいて、マップを更新する onSuggestionClick オプションを実装しました。検索ビューはアクション バーにあります。問題は、ユーザーが提案をクリックすると、何らかの形でアクティビティが再作成されることです (OnPause と OnResume が呼び出されると思いますか?)。これを防ぐ方法はありますか?ユーザーが提案をクリックするたびにアクティビティが「再作成」されるのは望ましくありません。

さらにコードが必要な場合は、お問い合わせください。ありがとう。

編集:コードが追加されました

    <?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
    android:label="@string/app_name"
    android:hint="@string/search_hint"
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"
    android:voiceLanguageModel="web_search"
    android:searchSuggestAuthority="com.pt.provider"
    android:searchSuggestIntentData="content://com.pt.provider/busstop">
</searchable>

私の主な活動について:

        // Bind the Activity’s SearchableInfo to the Search View
            searchView = (SearchView)menu.findItem(R.id.menu_search).getActionView();
            this.setupSearchView();

    private void setupSearchView()
        {   
            // Use the Search Manager to find the SearchableInfo related
            // to this Activity.
            SearchManager searchManager =
                    (SearchManager)getSystemService(Context.SEARCH_SERVICE);
            SearchableInfo searchableInfo =
                    searchManager.getSearchableInfo(getComponentName());
            searchView.setSearchableInfo(searchableInfo);
            searchView.setSubmitButtonEnabled(false);

            searchView.setOnSuggestionListener(new OnSuggestionListener() {

                @Override
                public boolean onSuggestionSelect(int position) {

                    return false;
                }

                @Override
                public boolean onSuggestionClick(int position) {

                    // Do things

                    return false;
                }
            });
        }
4

1 に答える 1

3

私の質問を解決しました。マニフェストで変更:

から:

android:launchMode="singleTop"

に:

android:launchMode="singleTask"
于 2013-01-03T15:19:26.400 に答える