(二)进阶练习____7、添加搜索功能——保持向后的兼容性

分任务链接地址:http://docs.eoeandroid.com/training/search/backward-compat.html

作者:李小豆

完成时间: 9月3日

目录

 [隐藏

保持向后兼容

SearchView和action bar只在android3.0及3.0版本以上支持,为了支持旧的平台,你可以使用搜索的对话框,这个搜索对话框是系统提供的用户界面,被调用时它会悬浮在屏幕顶部.

设置运行API最低版本和期望运行API的级别

如果想要旧设备支持安装搜索对话框,首先需要对Manifest文件进行声明,但如果设备是android3.0或以上的版本,你的应用会自动用到android 3.0(或以上版本)中的操作栏,在旧的设备上就会用到传统的菜单。 

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />
 
<application>
...

为旧设备提供搜索对话框

在旧设备调用搜索对话框,当用户选择了选项中搜索菜单项时会调用onSearchRequested(),因为android3.0或者更高的设备,会在action bar中显示SearchView(在第一节已经演示了)。只有当设备版本号低于3.0,当用户选择查询菜单项会调onOptionsItemSelected()方法 

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.search:
            onSearchRequested();
            return true;
        default:
            return false;
    }
}

android运行环境检测

在运行的时,检查设备版本确保旧设备不会使用SearchView,在以下示例代码中,这种情况在onCreateOptionsMenu()方法中出现。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
 
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);
 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(false);
    }
    return true;
}

 

 

 
 
posted @ 2014-07-30 16:37  ╰→劉じ尛鶴  阅读(112)  评论(0)    收藏  举报