android中search相关的activity到底如何跳转
澳门新葡京官网
澳门新葡京官网
当前位置 : 澳门新葡京官网 > 网上赌博新址

android中search相关的activity到底如何跳转

读过了android developer上面关于search的那些指南,可是还有些疑问。

1 关于activity之间的关系

搜索涉及到两部分,用户输入和请求处理,那么我想知道用户输入所在的Activity和请求处理所在的Activity是同一个吗?

按照指南,配置搜索的步骤:

1)创建activity

       <activity
            android:name="com.app.maplite.activity.SearchActivity"
            android:launchMode="singleTop" >
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>

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

那么我想知道这个SearchActivity是作为用户输入Activity还是请求处理Activity的?

根据指南说的,系统接到search请求之后将相关数据放入intent然后发送到这个SearchActivity,看样子他是属于请求处理的,如果说是这样的话,那个meat-data要来何用?按照我的理解,meta-data这部分是用来定制搜索框展示情况的,这跟SearchActivity有个毛的关系?

根据我自己的测试,好像用户输入和请求处理必须在同一个Activity里面,如果这样的话,为什么要通过Intent这样的方法来传递搜索数据,这导致Activity的交互啊,真的很麻烦,是我理解有误还是怎么的?

2)我自己的代码有些问题,希望能解答一下。

    <activity
        android:name="com.app.activity.MapActivity"
        android:label="@string/title_activity_map"
        android:launchMode="singleTop" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

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

Activity:

public class MapActivity extends ActionBarActivity {
    @Override
    protected void onCreateBundle savedInstanceState {

        super.onCreatesavedInstanceState;
        setContentViewR.layout.activity_map;

        handleIntentgetIntent;
    }

    private void handleIntentIntent intent {
        if Intent.ACTION_SEARCH.equalsintent.getAction {
            Log.d"map", "do serach from new intent " + keyword;
            String keyword = intent.getStringExtraSearchManager.QUERY;
            doSearchkeyword, null;
        }
    }

    @Override
    protected void onNewIntentIntent intent {
        setIntentintent;
        handleIntentintent;
    }

    private void doSearchString keyword, String type {
        Log.d"map", "do serach " + keyword;
    }


    @Override
    public boolean onCreateOptionsMenuMenu menu {
        MenuInflater inflater = getMenuInflater;
        inflater.inflateR.menu.u_action_menu_map, menu;

        MenuItem searchItem = menu.findItemR.id.action_search;
        SearchManager searchManager = SearchManager getSystemServiceContext.SEARCH_SERVICE;
        SearchView searchView = SearchView MenuItemCompat.getActionViewsearchItem;
        searchView.setSearchableInfosearchManager.getSearchableInfogetComponentName;
        searchView.setOnQueryTextListenernew SearchView.OnQueryTextListener {
            @Override
            public boolean onQueryTextSubmitString key {
                Log.d"map", "query test submit:" + key;
                doSearchkey, null;
                return true;
            }

            @Override
            public boolean onQueryTextChangeString key {
                return false;
            }
        };
        return super.onCreateOptionsMenumenu;
    }

}

运行后,点击搜索“xx”后,会触发多次搜索事件,也就是说

Log.d"map", "do serach " + keyword;

会触发多次,问题我想就是由于Activity跳转引起的吧,但是不知道如何解决。

额,我也遇到这个问题,搞了好久,解决了http://segmentfault.com/blog/tcstory/1190000002611886

栏目列表

广告位

澳门新葡京官网