Android:搜索按钮未显示在操作栏中

时间:2015-05-10 10:12:49

标签: android

我正在创建联系人列表视图,并希望将搜索视图添加到该活动。我创建了一个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安装到手机并尝试启动应用时,我在操作栏上看不到搜索视图。什么可能出错?

3 个答案:

答案 0 :(得分:2)

你需要这个:

app:actionViewClass="android.support.v7.widget.SearchView"

而不是:

android:actionViewClass="android.widget.SearchView"

答案 1 :(得分:1)

如果您使用AppCompatActivityActionBarActivity作为父级活动,那么您的菜单类应运行正常,但如果您使用的是ActivityFragmentActivity,则必须使用<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

的好教程