【问题标题】:SearchView in fragment Android片段Android中的SearchView
【发布时间】:2017-06-03 21:15:03
【问题描述】:

我在片段中有一个工具栏,我想为这个工具栏添加 searchView

我有这个:

 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    menu.clear();
    getActivity().getMenuInflater().inflate(R.menu.menu_principal, menu);
    MenuItem item = menu.findItem(R.id.buscar);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return true;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            try {
                ArrayList<Producto> listaFiltrada = filter(list,newText);
                adapterProductos.setFilter(listaFiltrada);
            }catch (Exception r) {
                r.printStackTrace();
            }
            return true;
        }
    });

    MenuItemCompat.setOnActionExpandListener(item, new MenuItemCompat.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            adapterProductos.setFilter(list);
            return true;
        }
    });
}

还有这个项目菜单:

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

但我有一个空指针...

致命异常:主要 进程:jaimeperezpedraza.org.tienda,PID:15971 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.SearchView.setOnQueryTextListener(android.widget.SearchView$OnQueryTextListener)”

我认为我没有很好地捕捉 searchView...

帮助?

【问题讨论】:

  • View getActionView (MenuItem item) 已弃用:developer.android.com/reference/android/support/v4/view/…
  • 哦...谢谢我去搜索其他的mettod
  • @VeneetReddy - 它仅在版本 26.0.0 中被弃用,该版本仍处于 alpha 阶段。如果您使用的是支持库的早期版本,您仍然需要使用 MenuItemCompat.getActionView。

标签: java android android-fragments searchview


【解决方案1】:

您的NullPointerException 是由于searchView 为空。这是因为您的 XML 有 app:actionViewClass="android:support.v7.widget.SearchView" - 请注意类名中间的 :。

应该改为android.support.v7.widget.SearchView:

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

【讨论】:

    猜你喜欢
    • 2015-10-12
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    相关资源
    最近更新 更多