android– 在Fragment中添加SearchView

android– 在Fragment中添加SearchView,第1张

概述尝试在 *** 作栏中包含搜索查看.为此,我做了以下事情:在菜单文件夹中创建了MenuSearch.xml,如下所示:<?xmlversion="1.0"encoding="utf-8"?><menuxmlns:android="http://schemas.android.com/apkes/android"><itemandroid:id="@+id/action_searc

尝试在 *** 作栏中包含搜索查看.为此,我做了以下事情:

在菜单文件夹中创建了MenuSearch.xml,如下所示:

<?xml version="1.0" enCoding="utf-8"?><menu xmlns:androID="http://schemas.androID.com/apk/res/androID">   <item    androID:ID="@+ID/action_search"    androID:actionVIEwClass="AndroID.Support.V7.Widget.SearchVIEw"    androID:icon="@androID:drawable/ic_menu_search"    androID:showAsAction="always"    androID:title="Search"/></menu>

包含片段中的OnCreateOptionsMenu方法:

public overrIDe voID OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)    {        inflater.Inflate(Resource.Menu.MenuSearch, menu);        base.OnCreateOptionsMenu(menu, inflater);        var searchManager = (SearchManager) this.Activity.GetSystemService(Context.SearchService);        searchVIEw = (SearchVIEw) (menu.FindItem(Resource.ID.action_search).ActionVIEw);        searchVIEw.SetSearchableInfo(searchManager.GetSearchableInfo(Activity.Componentname));    }

我设置了HasOptionsMenu = true;在片段的oncreate.

使用上面的代码,我在searchVIEw.SetSearchableInfo …行中获得空指针.不知道为什么会发生这种情况,尽管一切似乎都是正确的.

基于解决类似问题的一些建议,我还尝试了searchvIEw的以下选项.

        var item = menu.FindItem (Resource.ID.action_search);        var searchItem = MenuItemCompat.GetActionVIEw(item);        searchVIEw = searchItem.JavaCast<AndroID.Support.V7.Widget.SearchVIEw>();        searchVIEw.SetSearchableInfo(searchManager.GetSearchableInfo(Activity.Componentname));

但同样,我将searchVIEw视为null.

现在我已经尝试了可能的选项,我对于为什么searchvIEw变为null无能为力.

任何帮助深表感谢.

解决方法:

将MenuSearch.xml更改为

<?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">    <item androID:ID="@+ID/action_search"        androID:title="@string/app_name"        androID:icon="@drawable/ic_action_search"        app:showAsAction="collapseActionVIEw|ifRoom"         /></menu>

并在您的片段中添加searchVIEw.setonqueryTextListener

@OverrIDe    public voID onCreateOptionsMenu(Menu menu, MenuInflater inflater) {        super.onCreateOptionsMenu(menu, inflater);        menu.clear();        inflater.inflate(R.menu.search_option_menu, menu);        MenuItem item = menu.findItem(R.ID.action_search);        SearchVIEw searchVIEw = new SearchVIEw(((MainActivity) mContext).getSupportActionbar().getthemedContext());        MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ColLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);        MenuItemCompat.setActionVIEw(item, searchVIEw);        searchVIEw.setonqueryTextListener(new SearchVIEw.OnqueryTextListener() {            @OverrIDe            public boolean onqueryTextsubmit(String query) {                return false;            }            @OverrIDe            public boolean onqueryTextChange(String newText) {                return false;            }        });        searchVIEw.setonClickListener(new VIEw.OnClickListener() {                                          @OverrIDe                                          public voID onClick(VIEw v) {                                          }                                      }        );    }
总结

以上是内存溢出为你收集整理的android – 在Fragment中添加SearchView全部内容,希望文章能够帮你解决android – 在Fragment中添加SearchView所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1098458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存