关于com.actionbarsherlock.widget.SearchView的使用无法调用SearchActivity
2014-02-21 13:41
302 查看
我也是按照android 文档做的。
在res/xml下 新建searchable.xml
根据自己需求设置不同的属性。
然后在androidManifest.xml定义activity
然后在自己的TestActivity里面
res/menu 下面新建 search.xml
这样子发现,在搜索框中确定搜索的时候不弹出。
研究才发现在TestActivity中
我就新建一个
但是实例都没有这样。为什么就是我的
androidManifest.xml中还有定义
在res/xml下 新建searchable.xml
<?xml version="1.0" encoding="utf-8"?> <searchable android:label="@string/app_name" android:hint="@string/search_hint" android:searchSuggestAuthority="com.mengqi.base.provider" android:searchSuggestPath="newsearch" android:searchSuggestSelection="word LIKE ?" android:searchSuggestIntentAction="android.intent.action.VIEW" android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" android:searchSuggestThreshold="2" android:includeInGlobalSearch="true" xmlns:android="http://schemas.android.com/apk/res/android" />
根据自己需求设置不同的属性。
然后在androidManifest.xml定义activity
<activity android:name=".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>
然后在自己的TestActivity里面
@Override public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { getSupportMenuInflater().inflate(R.menu.search, menu); SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); searchView.setQueryHint(getString(R.string.search_hint)); searchView.setOnQueryTextListener(this); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); return super.onCreateOptionsMenu(menu); } @Override public boolean onQueryTextSubmit(String str) { // TODO Auto-generated method stub LogUnit.Log(TAG, "search submit:" + str); return false;//必须返回false 要不然SearchView认为你处理该提交。他不会再进行处理 } @Override public boolean onQueryTextChange(String str) { // TODO Auto-generated method stub LogUnit.Log(TAG, "text change:" + str); return false; }
res/menu 下面新建 search.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:icon="@drawable/ic_action_search" android:id="@id/menu_search" android:orderInCategory="10" android:title="@string/search" android:actionViewClass="com.actionbarsherlock.widget.SearchView" android:showAsAction="ifRoom|collapseActionView" /> </menu>
这样子发现,在搜索框中确定搜索的时候不弹出。
研究才发现在TestActivity中
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));设置进去的SearchableInfo是空的。
我就新建一个
searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchActivity.class)));这样子就能够正常运行了。
但是实例都没有这样。为什么就是我的
searchManager.getSearchableInfo(getComponentName())得到的是空值。所以认真寻找 才发现在
androidManifest.xml中还有定义
<meta-data android:name="android.app.default_searchable" android:value=".SearchActivity" />这样子,
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));才能够正常起作用。
相关文章推荐
- 关于WebView的使用js和java的相互调用(包含按返回按钮时,返回上一页而不是推出activity)
- 【Android】使用SearchView时软键盘不支持actionSearch的问题
- 关于TabActivity+ViewFlipper组合使用出现的问题
- 使用BottomNavigationView是activity无法启动问题
- 关于C++使用opencv链接库无法调用的问题
- 使用指定的Action,Category调用系统Activity
- 关于MIUI6下使用Widget调用Toast的一个问题
- 关于-viewWillAppear:等无法调用的总结
- WebView使用(一) 无法显示内容、在fragment+activity中的使用
- 关于真机测试的android选择图片在ImageView上显示,调用setImageBitmap无法显示和闪退、控件消失
- 关于android SearchView的使用
- 【自用】Android 关于surfaceview调用宿主Activity中的方法
- iOS 使用WKWebView加载h5页面无法调用拨打电话功能
- 关于在Fragment中使用startActivityForResult();方法后onActivityResult()未被调用的解决方案
- 关于 App Widget Configuration Activity返回值调用的问题。
- 关于SearchView的使用理解
- WebView使用中js调用java代码时targetSdkVersion大于17时,无法调用成功
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果
- 使用布局的Onclick属性运行出现“Could not find a method~~(View) in the activity class com.~~”
- android开发(26) 和其他应用交换数据方式一,使用intent指定自定义action调用其他程序里的activity,并获得其返回的结果