搜索查看无法正常上先回preSS关闭(这只是失去焦点)这只、无法正常、焦点、preSS

2023-09-12 03:03:07 作者:个性点的大全

我要preSS的后退按钮两次,以关闭搜索查看。为什么?在第一个preSS,在搜索查看只是失去专注......

在设置 setOnKeyListener 搜索查看也不管用...

顺便说一句,我使用的是ABS执行...

我的code是简单,如下所示:

  mMenuItemSearch = menu.findItem(R.id.search);
mSearchView =新的搜索查看(getSupportActionBar()getThemedContext());
mMenuItemSearch.setActionView(mSearchView);

mSearchView.setOnQueryTextListener(新SearchView.OnQueryTextListener()
{
    公共布尔onQueryTextChange(字符串newText)
    {
        mPagerManager.getFragment(mSelectedPos).adapter.getFilter()过滤器(newText)。
        返回true;
    }

    公共布尔onQueryTextSubmit(查询字符串)
    {
        返回true;
    }
});
 

解决方案

我解决了这种方式:

  ...
公共类MyFragment扩展片段实施SearchView.OnFocusChangeListener< ----
...

@覆盖
公共无效onFocusChange(视图V,布尔hasFocus){
    菜单项菜单项= menu.findItem(R.id.action_search);
    搜索查看SV =(搜索查看)MenuItemCompat.getActionView(菜单项);
    如果(!hasFocus){
        sv.onActionViewCollapsed(); < ----
        interactionListener.showDrawerToggle(真正的); < ----
    }
}

...

公共无效configureSearchView(功能菜单){
    this.menu =菜单;
    菜单项菜单项= menu.findItem(R.id.action_search);
    搜索查看SV =(搜索查看)MenuItemCompat.getActionView(菜单项);
    sv.setOnSearchClickListener(新View.OnClickListener(){
        @覆盖
        公共无效的onClick(视图v){
            interactionListener.showDrawerToggle(假);
        }
    });

    sv.setOnQueryTextListener(本);
    sv.setOnCloseListener(本);
    sv.setSubmitButtonEnabled(假);
    sv.setIconifiedByDefault(真正的);
    sv.setOnQueryTextFocusChangeListener(本); < ----

    如果(initialQuery!= NULL){
        sv.setIconified(假);
        menuItem.expandActionView();
        sv.setQuery(initialQuery,真正的);
    }
}
...
 
关于 Win10 Search 没有网页搜索的完整解决方案

I have to press the backbutton twice, to close the SearchView. Why? On the first press, the SearchViewonly looses focus...

Setting setOnKeyListener on SearchView does not work either...

Btw, I'm using the ABS implementation...

My code is simple and looks like the following:

mMenuItemSearch = menu.findItem(R.id.search);
mSearchView = new SearchView(getSupportActionBar().getThemedContext());
mMenuItemSearch.setActionView(mSearchView);

mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
{
    public boolean onQueryTextChange(String newText)
    {
        mPagerManager.getFragment(mSelectedPos).adapter.getFilter().filter(newText);
        return true;
    }

    public boolean onQueryTextSubmit(String query)
    {
        return true;
    }
});

解决方案

I solved it this way:

...
public class MyFragment extends Fragment implemented SearchView.OnFocusChangeListener    <----
...

@Override
public void onFocusChange(View v, boolean hasFocus) {
    MenuItem menuItem = menu.findItem(R.id.action_search);
    SearchView sv = (SearchView)MenuItemCompat.getActionView(menuItem);
    if(!hasFocus) {
        sv.onActionViewCollapsed();   <----
        interactionListener.showDrawerToggle(true);    <----
    }
}

...

public void configureSearchView(Menu menu) {
    this.menu = menu;
    MenuItem menuItem = menu.findItem(R.id.action_search);
    SearchView sv = (SearchView)MenuItemCompat.getActionView(menuItem);
    sv.setOnSearchClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            interactionListener.showDrawerToggle(false);
        }
    });

    sv.setOnQueryTextListener(this);
    sv.setOnCloseListener(this);
    sv.setSubmitButtonEnabled(false);
    sv.setIconifiedByDefault(true);
    sv.setOnQueryTextFocusChangeListener(this);     <----

    if(initialQuery != null) {
        sv.setIconified(false);
        menuItem.expandActionView();
        sv.setQuery(initialQuery, true);
    }
}
...