【问题标题】:AppCompat - how to restore SearchViewAppCompat - 如何恢复 SearchView
【发布时间】:2015-05-24 18:30:34
【问题描述】:

我可以打开 SearchView,但是无论我尝试什么,我都无法恢复搜索内容...

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
    inflater.inflate(R.menu.menu_phone_contacts_list, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    final SearchView searchView = (SearchView) searchItem.getActionView();
    searchView.setOnQueryTextListener(this);

    if (DataManager.get().getLastContactFilter() != null)
    {
        MenuItemCompat.expandActionView(searchItem);

       // Variant 1 - does not work:
       searchView.setQuery(DataManager.get().getLastContactFilter(), false);

       // Variant 2 - does not work either:
       searchView.post(new Runnable() {
           @Override
           public void run() {
               searchView.setQuery(DataManager.get().getLastContactFilter(), false);
           }
       });
    }

变体 3 正在恢复以下功能中的内容:

  @Override
public void onPrepareOptionsMenu (Menu menu)
{
    super.onPrepareOptionsMenu(menu);

    if (DataManager.get().getLastContactFilter() != null)
    {
        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
        searchView.setQuery(DataManager.get().getLastContactFilter(), false);
    }
}

但没有变体起作用...

【问题讨论】:

    标签: android android-appcompat searchview


    【解决方案1】:

    使用静态MenuItemCompat的方法获取SearchView

    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setQuery("myQueryText", false);
    

    并检查xml项目菜单,它需要像“app”前缀(与平台无关)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-21
      • 2020-03-04
      • 2016-01-10
      • 2015-02-28
      • 1970-01-01
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多