onSuggestionClick重新创建我的活动

时间:2013-01-01 03:05:41

标签: android searchview

在我的应用程序中,我使我的内容提供程序可搜索,将我的主要活动定义为我的清单上的默认搜索活动。

    <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;
                }
            });
        }

1 个答案:

答案 0 :(得分:3)

解决了我的问题。更改清单:

自:

android:launchMode="singleTop"

要:

android:launchMode="singleTask"