SearchView 尝试在空引用上调用虚方法

Posted

技术标签:

【中文标题】SearchView 尝试在空引用上调用虚方法【英文标题】:SearchView Attempt to invoke virtual method on null reference 【发布时间】:2017-05-26 03:01:22 【问题描述】:

我将这个search_widget.xml 作为片段中的 SearchView 服务:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:compat="http://schemas.android.com/apk/res-auto"
      xmlns:app="http://schemas.android.com/tools">
    <item android:id="@+id/search_questions"
          android:title="Search"
          android:icon="@drawable/search"
          compat:showAsAction="always"
          app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>

现在在我的片段中,我有以下代码:

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,
                             @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
        View rootView = inflater.inflate(R.layout.search_activity_layout, container, false);
        listView = (ListView) rootView.findViewById(R.id.search_list_view);
        spinner = (ProgressBar) rootView.findViewById(R.id.progressBar);
        spinner.setVisibility(View.GONE);
        setHasOptionsMenu(true);
        return rootView;
    

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
        inflater.inflate(R.menu.search_widget, menu);
        MenuItem item = menu.findItem(R.id.search_questions);
        SearchView searchView = (SearchView) item.getActionView();

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() 
            @Override
            public boolean onQueryTextSubmit(String query) 
                retrieveIdsOfDocuments(query);
                return true;
            

            @Override
            public boolean onQueryTextChange(String newText) 
                return false;
            
        );
        super.onCreateOptionsMenu(menu, inflater);
    

在上面的代码中,searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() 行出现错误,指出 Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setOnQueryTextListener(android.support.v7.widget.SearchView$OnQueryTextListener)' on a null object reference

我曾尝试查看有关在片段中添加菜单的其他 *** 帖子,但没有找到可行的解决方案。

【问题讨论】:

请提供您发现不起作用的其他帖子,以免其他人给出类似的答案 试试这个,***.com/questions/14286768/… 【参考方案1】:

你在使用proguard吗?如果是这样,请将以下内容添加到您的规则文件中:

-保持类 android.support.v7.widget.SearchView *;

【讨论】:

【参考方案2】:

更新答案:

在您的 search_widget.xml 中,xmlns:app 命名空间不正确。之前错过了。尝试将其设置为以下内容:

xmlns:app="http://schemas.android.com/apk/res-auto"

【讨论】:

以上是关于SearchView 尝试在空引用上调用虚方法的主要内容,如果未能解决你的问题,请参考以下文章

尝试在空对象引用上调用虚方法Spinner.setAdapter(SpinnerAdapter)[duplicate]

尝试在空对象引用上调用虚方法'double android.location.Location.getLatitude()'[duplicate]

尝试在空对象引用上调用虚方法'boolean java.lang.String.equals(java.lang.Object)'

尝试在空对象引用[duplicate]上调用虚方法'java.io.File android.content.Context.getCacheDir()'

引起:java.lang.NullPointerException:尝试在空对象引用上调用虚方法'int org.json.JSONArray.length()'[duplicate]

Android:尝试在空对象引用[duplicate]上调用虚方法'void android.database.sqlite.SQLiteDatabase.execSQL(java.lang.