文章标题
来源:互联网 发布:交大网络大学 编辑:程序博客网 时间:2024/05/23 23:56
/*这个demo演示了search widget的用法,通过将该组件应用在action bar中。 * 1.创建右键菜单,将菜单项指向SearchViewandroid:actionViewClass="android.widget.SearchView" * 2.在res/xml目录下建立searchable.xml,根节点为:searchable该文件是对searchView的基本配置 * 如搜索框中显示的提示信息,搜索建议的相关信息等等。 * 3.searchView接收与用户交互的信息,但执行搜索并处理搜索结果却在另一个activity中完成(本例为InternalSelectionView) * 4.当用户提交搜索,系统会选择一个合适的activity并将搜索关键字附加到intent当中发送出去 * 5.SearchableActivity接收到搜索关键字并执行搜索和自理搜索结果 * 6.需要在配置文件中配置SearchableActivity添加: * <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>*/public class MainActivity extends Activity { private SearchView mSearchView; private SearchManager mSearchManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_ACTION_BAR); setContentView(R.layout.activity_main); mSearchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.searchview_in_menu, menu); MenuItem searchItem = menu.findItem(R.id.action_search); mSearchView = (SearchView) searchItem.getActionView(); // ComponentName cn=new ComponentName(this, // InternalSelectionView.class); // SearchableInfo info=mSearchManager.getSearchableInfo(cn); SearchableInfo info = mSearchManager .getSearchableInfo(getComponentName()); // System.out.println(info.getSuggestAuthority().toString()); List<SearchableInfo> seachables = mSearchManager .getSearchablesInGlobalSearch(); int N = seachables.size(); System.out.println(N); for (SearchableInfo inf : seachables) { System.out.println(inf.getSuggestAuthority().toString()); if (inf.getSuggestAuthority() != null && inf.getSuggestAuthority().startsWith("com.example")) { info=inf; } } mSearchView.setSearchableInfo(info); return true; }}
searchable_in_menu
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_search" android:title="search" android:icon="@android:drawable/ic_menu_search" android:showAsAction="always" android:actionViewClass="android.widget.SearchView" /></menu>
searchable.xml
android:includeInGlobalSearch=”true”将该searchable包含在全局中当我们使用
mSearchManager .getSearchablesInGlobalSearch();时就可以获取到该Searchable
<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android" android:hint="@string/search_hint" android:label="@string/search_label" android:searchSuggestAuthority="com.example.android.apis.SuggestionProvider" android:searchSuggestSelection=" ? " android:includeInGlobalSearch="true" ></searchable>
InternalSelectionView.java
public class InternalSelectionView extends Activity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.searchable_activity); tv=(TextView) findViewById(R.id.result); doSearch(getIntent()); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); doSearch(intent); } private void doSearch(Intent intent) { if(intent==null){ //System.out.println("意图为空!"); return; }else{ System.out.println(intent.getAction().toString()); if(Intent.ACTION_SEARCH.equals(intent.getAction())){ String text=intent.getStringExtra(SearchManager.QUERY); // System.out.println(text); tv.setText(text); } } }}
searchable_activity.xml
<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/result" android:layout_width="match_parent" android:layout_height="match_parent" android:text="这是进入Search的界面" ></TextView>
配置文件
需要注意的是android:name=”android.app.searchable”的值必须为android.app.searchable。否则我们在通过mSearchManager .getSearchableInfo(getComponentName());获取SearchableInfo时获取到的值为空。
<activity android:name="com.example.draganddrop.InternalSelectionView"> <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> </activity>
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- [bzoj4300][绝世水题]
- 零碎知识-控件类
- pdf2swf process阻塞问题
- iOS 创建单例
- iOS CocoaPods安装方法
- 文章标题
- eclipes安装离线Genymotion插件方法
- (NO.00001)iOS游戏SpeedBoy Lite成形记(二十八):增加排行榜功能
- RBM (受限玻尔兹曼机)
- 针对不同主机使用不同 SSH Key
- 囧研究:睡足8小时扯淡!
- 【转】sqlserver字段类型详解
- ios超精细详解之NSRunLoop
- layoutSubviews什么时候调用