我正在创建联系人列表视图,并希望将搜索视图添加到该活动。我创建了一个searchable.xml,其内容粘贴在
下面0 1 2 3 4 5 7 8
1 0 2 3 4 5 7 8
0 2 1 3 4 5 7 8
2 0 1 3 4 5 7 8
1 2 0 3 4 5 7 8
我还在活动中添加了元数据标记,如下所示
<?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">
</searchable>
我已经覆盖了onCreateOptionsMenu()方法
<activity
android:name=".ContactsWindow"
android:label="@string/title_activity_contacts_window" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable">
</meta-data>
</activity>
以下是此活动的菜单xml。
public boolean onCreateOptionsMenu(Menu menu) {
getActionBar().show();
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_contacts_window, menu);
SearchManager searchManager = (SearchManager)
getSystemService(Context.SEARCH_SERVICE);
searchMenuItem = menu.findItem(R.id.menuSearch);
searchView = (SearchView) searchMenuItem.getActionView();
searchView.setSearchableInfo(searchManager.
getSearchableInfo(getComponentName()));
searchView.setSubmitButtonEnabled(true);
searchView.setOnQueryTextListener(this);
searchView.setIconifiedByDefault(false);
return true;
}
当我将apk安装到手机并尝试启动应用时,我在操作栏上看不到搜索视图。什么可能出错?
答案 0 :(得分:2)
你需要这个:
app:actionViewClass="android.support.v7.widget.SearchView"
而不是:
android:actionViewClass="android.widget.SearchView"
答案 1 :(得分:1)
如果您使用AppCompatActivity
或ActionBarActivity
作为父级活动,那么您的菜单类应运行正常,但如果您使用的是Activity
或FragmentActivity
,则必须使用<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menuSearch"
android:title="Search"
android:icon="@drawable/find"
android:showAsAction="always"
android:actionViewClass="android.widget.SearchView" />
<item android:id="@+id/action_settings" android:title="@string/action_settings"
android:orderInCategory="100" app:showAsAction="always" />
</menu>
或{{1}}。使用
{{1}}
答案 2 :(得分:1)
我建议public boolean onCreateOptionsMenu(Menu menu)
返回
return super.onCreateOptionsMenu(menu);
编辑:
我重现了问题和解决方案:
请改变
\ ContactsDisplay \应用\ SRC \主\ RES \菜单\ menu_contacts_window.xml
app:actionViewClass="android.widget.SearchView"
到
android:actionViewClass="android.widget.SearchView"
请参阅有关命名空间here
的说明关于操作栏here
的好教程