Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';无法使actionbar中的SearchView正常工作_Android_List_Listview_Search_Searchview - Fatal编程技术网

Android Can';无法使actionbar中的SearchView正常工作

Android Can';无法使actionbar中的SearchView正常工作,android,list,listview,search,searchview,Android,List,Listview,Search,Searchview,我尝试了很多教程、stackoverflow解决方案和google教程->但我无法让actionbar中的searchview正常工作 有人看到我做错了什么吗 我总是在searchView上得到一个nullpointerexception 我的活动与列表视图: @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if

我尝试了很多教程、stackoverflow解决方案和google教程->但我无法让actionbar中的searchview正常工作

有人看到我做错了什么吗

我总是在searchView上得到一个nullpointerexception

我的活动与列表视图:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.list_menu, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setOnQueryTextListener(
            new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    Toast.makeText(ContactListActivity.this, query, Toast.LENGTH_SHORT).show();
                    return false;
                }

                @Override
                public boolean onQueryTextChange(String newText) {
                    Toast.makeText(ContactListActivity.this, newText, Toast.LENGTH_SHORT).show();
                    return false;
                }
            }
    );

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    ComponentName componentName = new ComponentName(getApplicationContext(), TorrentListActivity.class);
    searchView.setSearchableInfo(searchManager.getSearchableInfo(componentName));
    return true;
}
Searchable.xml

<?xml version="1.0" encoding="utf-8"?>
<searchable
    android:label="@string/app_name"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:hint="Search"
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"/>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="be.vanlooverenkoen.torrentsearch.TorrentListActivity">

    <item
        android:id="@+id/action_search"
        android:title="Search"
        android:icon="@drawable/ic_action_search"
        app:showAsAction="ifRoom|collapseActionView"
        android:actionViewClass="android.support.v7.widget.SearchView"/>

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:title="@string/menu_settings"
        app:showAsAction="never" />
</menu>
解决方案

天哪 android:actionViewClass=“android.support.v7.widget.SearchView” 必须是 app:actionViewClass=“android.support.v7.widget.SearchView”


然后,如果它起作用了,因为您没有发布
AndroidManifest.xml
文件,我想您没有更改它。您应该添加:

<intent-filter>
    <action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
           android:resource="@xml/searchable" />


工具栏中
布局添加
编辑文本

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:minHeight="?attr/actionBarSize"
    android:background="#2196F3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

        <EditText
            android:id="@+id/inputSearch"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:background="@drawable/edit_text_transparent"
            android:hint="Search..."
            android:imeOptions="actionDone"
            android:singleLine="true"
            android:textColorHint="#fff" />
</android.support.v7.widget.Toolbar>
编辑

是否已将此命名空间添加到menu.xml中的搜索项中:

 app:actionViewClass="android.support.v7.widget.SearchView"/>
而且在清单中:

<meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable"/>

在您的列表\u menu.xml中

android:actionViewClass="android.support.v7.widget.SearchView"
应改为:

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

我建议使用工具栏,而不是操作栏。我可以带你看一下。编辑1=我想要什么,如果它看起来一样,对我来说没问题;)好的,你知道如何为你的活动实现工具栏吗?如果不遵循这一点,它真的很简单,那么我们可以添加edittext作为我们的searchview并实现filterable。我确实忘了发布它,但我确实做了你所写的。这总是给我一个searchview,我不需要一个按钮,如果我按下该按钮,字段将扩展到整个toolbaar/actionbar,并且我有一个自定义适配器,无法获取筛选器();从我的adapterNowp,我翻阅编辑文本的图标,我明白了。有一个办法让我们来。
 app:actionViewClass="android.support.v7.widget.SearchView"/>
<meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable"/>
android:actionViewClass="android.support.v7.widget.SearchView"
app:actionViewClass="android.support.v7.widget.SearchView"