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 回答