android - 为 SearchView 设置 setOnQueryTextListener 会给出空指针异常

标签 android menu searchview

我在操作栏中将搜索 View 作为选项菜单

onCreateOptionsMenu 方法中,我得到如下搜索 View

inflater.inflate(R.menu.main, menu);

     SearchView searchView = (SearchView) menu.findItem(R.id.serach).getActionView();

当我尝试设置 setOnQueryTextListener 时,出现空指针异常。

我的代码如下

mSearchView.setOnQueryTextListener(new OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String arg0) {

            return true;
        }

        @Override
        public boolean onQueryTextChange(String arg0) {

            return false;
        }
    });

当我删除监听器时它工作正常。 有人能告诉我我做错了什么吗。

logcat日志

    02-11 20:04:15.574: E/AndroidRuntime(27028): FATAL EXCEPTION: main
02-11 20:04:15.574: E/AndroidRuntime(27028): java.lang.NullPointerException
02-11 20:04:15.574: E/AndroidRuntime(27028):    at com.example.test.PM_Fragment.onCreateOptionsMenu(PM_Fragment.java:61)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at android.app.Fragment.performCreateOptionsMenu(Fragment.java:1865)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at android.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:1919)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at android.app.Activity.onCreatePanelMenu(Activity.java:2552)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:479)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:845)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:273)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at android.os.Handler.handleCallback(Handler.java:725)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at android.os.Looper.loop(Looper.java:158)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at android.app.ActivityThread.main(ActivityThread.java:5751)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at java.lang.reflect.Method.invokeNative(Native Method)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at java.lang.reflect.Method.invoke(Method.java:511)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
02-11 20:04:15.574: E/AndroidRuntime(27028):    at dalvik.system.NativeStart.main(Native Method)

最佳答案

我怎么这么笨

我在 searchView 中获得了搜索 View ,我正在为 mSearchView 设置监听器。这完全是我的错误

关于android - 为 SearchView 设置 setOnQueryTextListener 会给出空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21705654/

相关文章:

android - 将工具栏用作操作栏时如何设置 SearchView 的样式?

android - SearchView 不调用 onOptionsItemSelected

Android:收听语音命令(一直)

android - 我如何在我的抽屉导航项目选择中用 Intent 替换 fragment

ie7 中的 css 子菜单悬停问题

linux - linux buildroot menuconfig中的su配置在哪里

android - 简单 RPG 的数据库表结构

java - 获取按钮点击时间

c# - Xaml 中的展开/折叠菜单

Android Searchview 不在操作栏中在其他 View 上创建